From 876a44a82852df5845bf9105e80c98a051f863ff Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期三, 12 十一月 2025 17:55:20 +0800
Subject: [PATCH] feat: 1.3.0.2

---
 apps/underTakeMiniApp/src/assets/workbenches/icon-settle.png                                       |    0 
 apps/underTakeMiniApp/src/subpackages/task/components/TaskCheckCard.vue                            |   88 ++-
 apps/underTakeMiniApp/src/subpackages/payrollManage/payrollManageDetail/InnerPage.vue              |    3 
 apps/underTakeMiniApp/src/subpackages/settleManage/settleManage/settleManage.config.ts             |    3 
 packages/services/apiV2/enterpriseEmployee.ts                                                      |   30 +
 apps/underTakeMiniApp/src/subpackages/settleManage/settleManage/settleManage.vue                   |   13 
 apps/underTakeMiniApp/src/subpackages/settleManage/settleManageDetail/settleManageDetail.vue       |   13 
 apps/underTakeMiniApp/src/subpackages/settleManage/settleManageDetail/settleManageDetail.config.ts |    3 
 apps/underTakeMiniApp/src/subpackages/settleManage/settleManage/InnerPage.vue                      |  162 +++++++
 apps/underTakeMiniApp/src/subpackages/flexJobManage/flexJobManage/InnerPage.vue                    |    8 
 packages/components/src/Card/PayrollManageDetailCard.vue                                           |    2 
 packages/services/apiV2/index.ts                                                                   |   10 
 packages/components/src/index.ts                                                                   |    1 
 apps/underTakeMiniApp/src/constants/router.ts                                                      |    4 
 packages/constants/apiEnum.ts                                                                      |   48 +
 apps/underTakeMiniApp/src/subpackages/settleManage/settleChange/settleChange.ts                    |    3 
 packages/services/apiV2/eventUtils.ts                                                              |   15 
 apps/underTakeMiniApp/src/app.config.ts                                                            |    8 
 packages/services/apiV2/user.ts                                                                    |   15 
 /dev/null                                                                                          |   78 ---
 apps/underTakeMiniApp/src/subpackages/settleManage/settleChange/InnerPage.vue                      |  264 ++++++++++++
 apps/underTakeMiniApp/src/pages/workbenches/InnerPage.vue                                          |    6 
 apps/underTakeMiniApp/src/subpackages/settleManage/settleManageDetail/InnerPage.vue                |  289 +++++++++++++
 apps/underTakeMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue                           |   33 +
 apps/underTakeMiniApp/src/subpackages/settleManage/settleChange/settleChange.vue                   |   17 
 packages/services/apiV2/typings.d.ts                                                               |  178 +++++++-
 apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/InnerPage.vue                      |    3 
 27 files changed, 1,142 insertions(+), 155 deletions(-)

diff --git a/apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/InnerPage.vue b/apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/InnerPage.vue
index b736562..0d63499 100644
--- a/apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/InnerPage.vue
+++ b/apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/InnerPage.vue
@@ -98,12 +98,11 @@
   EnumTaskSettlementStatus,
   BillingMethodEnumUnit,
 } from '@12333/constants';
-import PayrollManageDetailCard from '../components/PayrollManageDetailCard.vue';
 import { Message, paginateList, setOSSLink, toThousand, OrderUtils } from '@12333/utils';
 import { useQuery } from '@tanstack/vue-query';
 import dayjs from 'dayjs';
 import { goBack } from '@/utils';
-import { ChunkTitle } from '@12333/components';
+import { ChunkTitle, PayrollManageDetailCard } from '@12333/components';
 
 defineOptions({
   name: 'InnerPage',
diff --git a/apps/underTakeMiniApp/src/app.config.ts b/apps/underTakeMiniApp/src/app.config.ts
index 525531c..be3fe87 100644
--- a/apps/underTakeMiniApp/src/app.config.ts
+++ b/apps/underTakeMiniApp/src/app.config.ts
@@ -117,6 +117,14 @@
       ],
     },
     {
+      root: 'subpackages/settleManage',
+      pages: [
+        'settleManage/settleManage',
+        'settleManageDetail/settleManageDetail',
+        'settleChange/settleChange',
+      ],
+    },
+    {
       root: 'subpackages/payrollManage',
       pages: [
         'payrollManage/payrollManage',
diff --git a/apps/underTakeMiniApp/src/assets/workbenches/icon-settle.png b/apps/underTakeMiniApp/src/assets/workbenches/icon-settle.png
new file mode 100644
index 0000000..daf3cb9
--- /dev/null
+++ b/apps/underTakeMiniApp/src/assets/workbenches/icon-settle.png
Binary files differ
diff --git a/apps/underTakeMiniApp/src/constants/router.ts b/apps/underTakeMiniApp/src/constants/router.ts
index c6a9c3e..2938b64 100644
--- a/apps/underTakeMiniApp/src/constants/router.ts
+++ b/apps/underTakeMiniApp/src/constants/router.ts
@@ -24,6 +24,10 @@
   // cooperation = '/subpackages/setting/cooperation/cooperation',
   // faq = '/subpackages/setting/faq/faq',
 
+  settleManage = '/subpackages/settleManage/settleManage/settleManage',
+  settleManageDetail = '/subpackages/settleManage/settleManageDetail/settleManageDetail',
+  settleChange = '/subpackages/settleManage/settleChange/settleChange',
+
   payrollManage = '/subpackages/payrollManage/payrollManage/payrollManage',
   payrollManageDetail = '/subpackages/payrollManage/payrollManageDetail/payrollManageDetail',
   payrollChange = '/subpackages/payrollManage/payrollChange/payrollChange',
diff --git a/apps/underTakeMiniApp/src/pages/workbenches/InnerPage.vue b/apps/underTakeMiniApp/src/pages/workbenches/InnerPage.vue
index a729914..7a2cecd 100644
--- a/apps/underTakeMiniApp/src/pages/workbenches/InnerPage.vue
+++ b/apps/underTakeMiniApp/src/pages/workbenches/InnerPage.vue
@@ -23,6 +23,11 @@
       <CellChunk title="鍙戣柂">
         <div class="workbenches-cell-list">
           <TaskDetailWelfareItem
+            :icon="IconSettleManage"
+            text="缁撶畻绠$悊"
+            @click="goPage(RouterPath.settleManage)"
+          />
+          <TaskDetailWelfareItem
             :icon="IconPayrollManage"
             text="鍙戣柂绠$悊"
             @click="goPage(RouterPath.payrollManage)"
@@ -43,6 +48,7 @@
 import IconPublishTask from '@/assets/workbenches/icon-publish-task.png';
 import IconTaskManage from '@/assets/workbenches/icon-task-manage.png';
 import IconPayrollManage from '@/assets/workbenches/icon-payroll.png';
+import IconSettleManage from '@/assets/workbenches/icon-settle.png';
 import { useAccessLogin } from '@/hooks';
 
 defineOptions({
diff --git a/apps/underTakeMiniApp/src/subpackages/flexJobManage/flexJobManage/InnerPage.vue b/apps/underTakeMiniApp/src/subpackages/flexJobManage/flexJobManage/InnerPage.vue
index 7bf13b5..a1d39e5 100644
--- a/apps/underTakeMiniApp/src/subpackages/flexJobManage/flexJobManage/InnerPage.vue
+++ b/apps/underTakeMiniApp/src/subpackages/flexJobManage/flexJobManage/InnerPage.vue
@@ -48,7 +48,12 @@
             <nut-button type="primary" @click.stop="checkContract(item)">鏌ョ湅鍚堢害</nut-button>
           </template> -->
           <nut-button
-            v-if="item.enterpriseSignContractStatus === EnumTaskUserSignContractStatus.Wait"
+            v-if="
+              (item.userSignContractStatus === EnumTaskUserSignContractStatus.Wait ||
+                item.userSignContractStatus === EnumTaskUserSignContractStatus.Stop ||
+                !item.userSignContractStatus) &&
+              item.source === EnumEnterpriseEmployeeSource.Internal
+            "
             type="primary"
             @click.stop="goEnterpriseSign(item)"
             >绛剧害</nut-button
@@ -73,6 +78,7 @@
   EnumTaskUserHireStatus,
   EnumTaskUserSignContractStatus,
   EnumPagedListOrder,
+  EnumEnterpriseEmployeeSource,
 } from '@12333/constants';
 import * as enterpriseEmployeeServices from '@12333/services/apiV2/enterpriseEmployee';
 import Taro from '@tarojs/taro';
diff --git a/apps/underTakeMiniApp/src/subpackages/payrollManage/components/PayrollManageDetailCard.vue b/apps/underTakeMiniApp/src/subpackages/payrollManage/components/PayrollManageDetailCard.vue
deleted file mode 100644
index 73231b3..0000000
--- a/apps/underTakeMiniApp/src/subpackages/payrollManage/components/PayrollManageDetailCard.vue
+++ /dev/null
@@ -1,78 +0,0 @@
-<template>
-  <div class="payroll-manage-detail-card-wrapper">
-    <FlexJobTopView :avatar="avatar" :name="name" :gender="gender" :isReal="isReal">
-      <template #detail>
-        <div class="payroll-manage-detail-card-container">
-          <div class="payroll-manage-detail-card-item">
-            <div class="payroll-manage-detail-card-item-label">宸ユ椂锛�</div>
-            <div class="payroll-manage-detail-card-item-text">{{ totalWorkHours }}</div>
-          </div>
-          <div class="payroll-manage-detail-card-item">
-            <div class="payroll-manage-detail-card-item-label">缁撶畻閲戦锛�</div>
-            <div class="payroll-manage-detail-card-item-text">
-              {{ `楼${toThousand(settlementAmount)}` }}
-            </div>
-          </div>
-        </div>
-      </template>
-    </FlexJobTopView>
-    <slot name="actions"></slot>
-  </div>
-</template>
-
-<script setup lang="ts">
-import { FlexJobTopView } from '@12333/components';
-import { EnumUserGender } from '@12333/constants';
-import { toThousand } from '@12333/utils';
-
-defineOptions({
-  name: 'PayrollManageDetailCard',
-});
-
-type Props = {
-  avatar?: string;
-  name?: string;
-  gender?: EnumUserGender;
-  isReal?: boolean;
-  totalWorkHours: number;
-  settlementAmount?: number;
-};
-
-const props = withDefaults(defineProps<Props>(), {});
-</script>
-
-<style lang="scss">
-@import '@/styles/common.scss';
-
-.payroll-manage-detail-card-wrapper {
-  background: #ffffff;
-  border-radius: 12px;
-  padding: 40px;
-  padding-right: 26px;
-  margin-bottom: 24px;
-
-  .payroll-manage-detail-card-container {
-    display: flex;
-    flex-direction: column;
-    margin-top: 14px;
-
-    .payroll-manage-detail-card-item {
-      display: flex;
-      align-items: center;
-      font-weight: 400;
-      font-size: 24px;
-      line-height: 32px;
-      flex: 1;
-      min-width: 0;
-
-      .payroll-manage-detail-card-item-label {
-        color: boleGetCssVar('text-color', 'regular');
-      }
-
-      .payroll-manage-detail-card-item-text {
-        color: boleGetCssVar('text-color', 'secondary');
-      }
-    }
-  }
-}
-</style>
diff --git a/apps/underTakeMiniApp/src/subpackages/payrollManage/payrollManageDetail/InnerPage.vue b/apps/underTakeMiniApp/src/subpackages/payrollManage/payrollManageDetail/InnerPage.vue
index e885c8c..e2f6d27 100644
--- a/apps/underTakeMiniApp/src/subpackages/payrollManage/payrollManageDetail/InnerPage.vue
+++ b/apps/underTakeMiniApp/src/subpackages/payrollManage/payrollManageDetail/InnerPage.vue
@@ -99,12 +99,11 @@
   EnumTaskSettlementStatus,
   BillingMethodEnumUnit,
 } from '@12333/constants';
-import PayrollManageDetailCard from '../components/PayrollManageDetailCard.vue';
 import { Message, paginateList, setOSSLink, toThousand, OrderUtils } from '@12333/utils';
 import { useQuery } from '@tanstack/vue-query';
 import dayjs from 'dayjs';
 import { goBack } from '@/utils';
-import { ChunkTitle } from '@12333/components';
+import { ChunkTitle, PayrollManageDetailCard } from '@12333/components';
 
 defineOptions({
   name: 'InnerPage',
diff --git a/apps/underTakeMiniApp/src/subpackages/settleManage/settleChange/InnerPage.vue b/apps/underTakeMiniApp/src/subpackages/settleManage/settleChange/InnerPage.vue
new file mode 100644
index 0000000..0a6270a
--- /dev/null
+++ b/apps/underTakeMiniApp/src/subpackages/settleManage/settleChange/InnerPage.vue
@@ -0,0 +1,264 @@
+<template>
+  <ContentScrollView :paddingH="false">
+    <nut-form :model-value="form" ref="formRef" :rules="rules">
+      <nut-form-item label="鏈嶅姟璐�:" class="bole-form-item" prop="serviceFee" label-width="90px">
+        <div class="bole-form-input-wrapper">
+          <NumberInput
+            v-model.trim="form.serviceFee"
+            class="nut-input-text bole-input-text"
+            placeholder="璇疯緭鍏ユ湇鍔¤垂"
+            :min="0"
+            :max="999999999999"
+            :precision="2"
+            type="text"
+            disabled
+          />
+          <div class="form-input-unit">鍏�</div>
+        </div>
+      </nut-form-item>
+      <nut-form-item label="瓒呮椂:" class="bole-form-item" prop="timeoutHours" label-width="90px">
+        <div class="bole-form-input-wrapper">
+          <NumberInput
+            v-model.trim="form.timeoutHours"
+            class="nut-input-text bole-input-text"
+            placeholder="璇疯緭鍏ヨ秴鏃舵椂闀�"
+            :min="0"
+            :max="999999999999"
+            :precision="2"
+            type="text"
+            @change="onTimeoutHoursChange"
+          />
+          <div class="form-input-unit">灏忔椂</div>
+        </div>
+      </nut-form-item>
+      <nut-form-item label="瓒呮椂璐圭敤:" class="bole-form-item" prop="timeoutFee" label-width="90px">
+        <div class="bole-form-input-wrapper">
+          <NumberInput
+            v-model.trim="form.timeoutFee"
+            class="nut-input-text bole-input-text"
+            placeholder="璇疯緭鍏ヨ秴鏃惰垂鐢�"
+            :min="0"
+            :max="999999999999"
+            :precision="2"
+            type="text"
+            @change="onActualSettlementAmountChange"
+          />
+          <div class="form-input-unit">鍏�</div>
+        </div>
+      </nut-form-item>
+      <nut-form-item label="鍏朵粬璐圭敤:" class="bole-form-item" prop="otherFee" label-width="90px">
+        <div class="bole-form-input-wrapper">
+          <NumberInput
+            v-model.trim="form.otherFee"
+            class="nut-input-text bole-input-text"
+            placeholder="璇疯緭鍏ュ叾浠栬垂鐢�"
+            :max="999999999999"
+            :precision="2"
+            type="text"
+            @change="onActualSettlementAmountChange"
+          />
+          <div class="form-input-unit">鍏�</div>
+        </div>
+      </nut-form-item>
+      <nut-form-item
+        label="缁撶畻閲戦:"
+        class="bole-form-item"
+        prop="settlementAmount"
+        label-width="90px"
+      >
+        {{ `${settlementAmount}鍏僠 }}
+      </nut-form-item>
+      <nut-form-item label="澶囨敞:" class="bole-form-item alignTop" prop="remark" label-width="90px">
+        <nut-textarea v-model="form.remark" rows="4" placeholder="璇疯緭鍏ュ娉�"> </nut-textarea>
+      </nut-form-item>
+    </nut-form>
+  </ContentScrollView>
+  <PageFooter>
+    <PageFooterBtn type="primary" @click="handleConfirm">纭淇敼</PageFooterBtn>
+  </PageFooter>
+</template>
+
+<script setup lang="ts">
+import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types';
+import { NumberInput } from '@12333/components';
+import { FormValidator, Message, toRound } from '@12333/utils';
+import * as userServices from '@12333/services/apiV2/user';
+import { EnumEnterpriseWalletAccess, EnumUserBankCardAccess } from '@12333/constants';
+import { goBack } from '@/utils';
+import Taro from '@tarojs/taro';
+import * as taskUserServices from '@12333/services/apiV2/taskUser';
+import { useQuery } from '@tanstack/vue-query';
+import * as taskServices from '@12333/services/apiV2/task';
+import { useEventChannel } from 'senin-mini/hooks';
+
+defineOptions({
+  name: 'InnerPage',
+});
+
+const router = Taro.useRouter();
+//缁撶畻鍗昳d
+const settleId = router.params?.settleId ?? '';
+//浜哄憳id
+const orderRosterId = router.params?.orderRosterId ?? '';
+const operatorToken = router.params?.operatorToken ?? '';
+
+const { isLoading, refetch } = useQuery({
+  queryKey: ['taskUserServices/getSettlementTaskUsers', settleId, operatorToken],
+  queryFn: async () => {
+    let params: API.APIgetSettlementTaskUsersParams = {
+      id: settleId,
+      operatorToken: operatorToken,
+    };
+
+    return await taskUserServices.getSettlementTaskUsers(params, {
+      showLoading: false,
+    });
+  },
+  placeholderData: () => ({} as API.GetSettlementTaskUsersQueryResult),
+  onSuccess(res) {
+    const settlementTaskUser = res.data.find((x) => x.id === orderRosterId);
+    if (res?.detail) {
+      form.serviceFee = settlementTaskUser?.serviceFee ?? 0;
+      form.actualSettlementAmount = settlementTaskUser?.actualSettlementAmount ?? 0;
+      form.settlementAmount = settlementTaskUser?.settlementAmount ?? 0;
+      form.receiveAccount = settlementTaskUser?.receiveAccount ?? '';
+      form.bank = settlementTaskUser?.bank ?? '';
+      form.settlementAccess = res?.detail?.settlementAccess;
+      form.timeoutServiceFee = res?.detail?.timeoutServiceFee ?? 0;
+      form.timeoutHours = settlementTaskUser?.timeoutHours ?? ('' as any as number);
+      form.timeoutFee = settlementTaskUser?.timeoutFee ?? ('' as any as number);
+      form.otherFee = settlementTaskUser?.otherFee ?? ('' as any as number);
+      form.remark = settlementTaskUser?.remark ?? '';
+
+      // form.settlementOrderName = setOssFileName(res?.detail?.settlementOrderName);
+      // form.settlementOrderTime = res?.detail?.settlementOrderTime ?? '';
+    }
+  },
+});
+
+const form = reactive({
+  settlementAmount: '' as any as number,
+  serviceFee: '' as any as number,
+  actualSettlementAmount: '' as any as number,
+  receiveAccount: '',
+  bank: '',
+  settlementAccess: EnumEnterpriseWalletAccess.PingAnPay,
+  timeoutServiceFee: 0,
+  timeoutHours: '' as any as number,
+  timeoutFee: '' as any as number,
+  otherFee: '' as any as number,
+  remark: '',
+});
+
+const settlementAmount = computed(() => sumSettlementAmount());
+
+function sumSettlementAmount() {
+  return toRound(
+    getFeeValue(Number(form.timeoutFee ?? 0)) +
+      getFeeValue(Number(form.serviceFee ?? 0)) +
+      getFeeValue(Number(form.otherFee ?? 0))
+  );
+}
+
+function getFeeValue(val: number) {
+  return val || 0;
+}
+
+const rules = reactive<FormRules>({
+  code: [
+    { required: true, message: '璇疯緭鍏ラ摱琛屽崱鍙�' },
+    { message: '璇疯緭鍏ユ纭殑閾惰鍗″彿', validator: FormValidator.validatorBankCard },
+  ],
+  bank: [{ required: true, message: '璇疯緭鍏ュ紑鎴疯' }],
+  phoneNumber: [
+    { required: true, message: '璇峰~鍐欐墜鏈哄彿鐮�' },
+    { message: '璇疯緭鍏ユ纭殑鎵嬫満鍙风爜', validator: FormValidator.validatorPhoneNumber },
+  ],
+  verifyCode: [{ required: true, message: '璇疯緭鍏ラ獙璇佺爜' }],
+});
+
+function onTimeoutHoursChange(event: any) {
+  form.timeoutFee = Number(form.timeoutServiceFee)
+    ? form.timeoutServiceFee * event.detail.value
+    : 0;
+  onActualSettlementAmountChange();
+}
+
+function onActualSettlementAmountChange() {
+  //鏆傛椂娉ㄦ帀
+  // form.actualSettlementAmount = sumSettlementAmount();
+}
+
+const formRef = ref<any>(null);
+function handleConfirm() {
+  if (!formRef.value) return;
+  formRef.value.validate().then(({ valid, errors }: any) => {
+    if (valid) {
+      confirm();
+    }
+  });
+}
+
+const eventChannel = useEventChannel();
+
+async function confirm() {
+  let params: API.EditTaskSettlementOrderRosterCommand = {
+    id: orderRosterId,
+    settlementAmount: settlementAmount.value,
+    actualSettlementAmount: settlementAmount.value,
+    receiveAccount: form.receiveAccount,
+    bank: form.bank,
+    // totalWorkHours: editForm.totalWorkHours,
+    // bankBranch: editForm.bankBranch,
+    serviceFee: Number(form.serviceFee),
+    timeoutHours: Number(form.timeoutHours),
+    timeoutFee: Number(form.timeoutFee),
+    otherFee: Number(form.otherFee),
+    remark: form.remark,
+  };
+  // try {
+  //   let params: API.EditTaskSettlementOrderRosterCommand = {
+  //     id: orderRosterId,
+  //     settlementAmount: settlementAmount.value,
+  //     actualSettlementAmount: form.actualSettlementAmount,
+  //     receiveAccount: form.receiveAccount,
+  //     bank: form.bank,
+  //     // totalWorkHours: editForm.totalWorkHours,
+  //     // bankBranch: editForm.bankBranch,
+  //     serviceFee: form.serviceFee,
+  //     timeoutHours: form.timeoutHours,
+  //     timeoutFee: form.timeoutFee,
+  //     otherFee: form.otherFee,
+  //     remark: form.remark,
+  //   };
+  //   let res = await taskServices.editTaskSettlementOrderRoster(params);
+  //   if (res) {
+  //     Message.success('淇敼鎴愬姛', {
+  //       onClosed() {
+  //         goBack();
+  //       },
+  //     });
+  //     eventChannel.emit('update');
+  //   }
+  // } catch (error) {}
+  eventChannel.emit('update', params);
+  goBack();
+}
+</script>
+
+<style lang="scss">
+@import '@/styles/common.scss';
+
+.settleChange-page-wrapper {
+  .bole-form-input-wrapper {
+    display: flex;
+    align-items: center;
+  }
+
+  .form-input-unit {
+    margin-left: 10px;
+    color: boleGetCssVar('text-color', 'primary');
+    flex-shrink: 0;
+  }
+}
+</style>
diff --git a/apps/underTakeMiniApp/src/subpackages/settleManage/settleChange/settleChange.ts b/apps/underTakeMiniApp/src/subpackages/settleManage/settleChange/settleChange.ts
new file mode 100644
index 0000000..305fdb1
--- /dev/null
+++ b/apps/underTakeMiniApp/src/subpackages/settleManage/settleChange/settleChange.ts
@@ -0,0 +1,3 @@
+export default definePageConfig({
+  disableScroll: true,
+});
diff --git a/apps/underTakeMiniApp/src/subpackages/settleManage/settleChange/settleChange.vue b/apps/underTakeMiniApp/src/subpackages/settleManage/settleChange/settleChange.vue
new file mode 100644
index 0000000..9857111
--- /dev/null
+++ b/apps/underTakeMiniApp/src/subpackages/settleManage/settleChange/settleChange.vue
@@ -0,0 +1,17 @@
+<template>
+  <PageLayout class="settleChange-page-wrapper" title="淇敼" has-border>
+    <InnerPage></InnerPage>
+  </PageLayout>
+</template>
+
+<script setup lang="ts">
+import InnerPage from './InnerPage.vue';
+
+defineOptions({
+  name: 'settleChange',
+});
+</script>
+
+<style lang="scss">
+@import '@/styles/common.scss';
+</style>
diff --git a/apps/underTakeMiniApp/src/subpackages/settleManage/settleManage/InnerPage.vue b/apps/underTakeMiniApp/src/subpackages/settleManage/settleManage/InnerPage.vue
new file mode 100644
index 0000000..9f15dbd
--- /dev/null
+++ b/apps/underTakeMiniApp/src/subpackages/settleManage/settleManage/InnerPage.vue
@@ -0,0 +1,162 @@
+<template>
+  <ProTabs
+    v-model="queryState.paymentStatus"
+    name="task-tab"
+    :showPaneContent="false"
+    class="task-tabs"
+    isTransparent
+    title-gutter="8"
+    title-scroll
+  >
+    <ProTabPane
+      :title="`寰呭鏍�(${waitAuditCount})`"
+      :pane-key="GetSettlementTasksQueryPaymentStatus.WaitAudit"
+    ></ProTabPane>
+    <ProTabPane
+      :title="`宸插鏍�(${completedAuditCount})`"
+      :pane-key="GetSettlementTasksQueryPaymentStatus.CompletedAudit"
+    ></ProTabPane>
+    <ProTabPane
+      :title="`宸插彂鏀�(${completedReleaseCount})`"
+      :pane-key="GetSettlementTasksQueryPaymentStatus.CompletedRelease"
+    ></ProTabPane>
+  </ProTabs>
+  <InfiniteLoading
+    scrollViewClassName="common-infinite-scroll-list settle-manage-list"
+    v-bind="infiniteLoadingProps"
+    :key="queryState.paymentStatus"
+  >
+    <template #renderItem="{ item }">
+      <IncomeDetailListItem
+        :title="item.code"
+        :funds="item.settlementAmount"
+        :item="item.settlementTime ? dayjs(item.settlementTime).format('YYYY-MM-DD HH:mm:ss') : ''"
+        @click="openPassword(item)"
+      >
+      </IncomeDetailListItem>
+    </template>
+  </InfiniteLoading>
+  <nut-short-password
+    v-model="form.password"
+    v-model:visible="form.passwordVisible"
+    @focus="form.showKeyboard = true"
+    @close="form.showKeyboard = false"
+    tips="璇疯緭鍏�6浣嶆搷浣滃瘑鐮�"
+    desc="鏄庣粏闇�杈撳叆鎿嶄綔瀵嗙爜鎵嶈兘鏌ョ湅"
+    :length="6"
+    @complete="complete"
+  >
+  </nut-short-password>
+  <nut-number-keyboard
+    v-model="form.password"
+    v-model:visible="form.showKeyboard"
+    @blur="form.showKeyboard = false"
+    :custom-key="['']"
+  >
+  </nut-number-keyboard>
+</template>
+
+<script setup lang="ts">
+import { ProTabs, ProTabPane, IncomeDetailListItem } from '@12333/components';
+import Taro from '@tarojs/taro';
+import dayjs from 'dayjs';
+import { GetSettlementTasksQueryPaymentStatus, EnumPagedListOrder } from '@12333/constants';
+import * as taskServices from '@12333/services/apiV2/task';
+import * as userServices from '@12333/services/apiV2/user';
+import { useInfiniteLoading } from '@12333/hooks';
+
+defineOptions({
+  name: 'InnerPage',
+});
+
+const form = reactive({
+  password: '',
+  passwordVisible: false,
+  showKeyboard: false,
+  id: '',
+});
+
+const queryState = reactive({
+  paymentStatus: GetSettlementTasksQueryPaymentStatus.WaitAudit,
+});
+
+const { infiniteLoadingProps, invalidateQueries } = useInfiniteLoading(
+  ({ pageParam }) => {
+    let params: API.GetSettlementTasksQuery = {
+      pageModel: {
+        rows: 20,
+        page: pageParam,
+        orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
+      },
+      paymentStatus: queryState.paymentStatus,
+    };
+    return taskServices.getSettlementTasks(params, {
+      showLoading: false,
+    });
+  },
+  {
+    queryKey: ['taskServices/getSettlementTasks', queryState],
+  }
+);
+
+const completedAuditCount = computed(() => {
+  return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.completedAuditCount ?? 0;
+});
+const waitAuditCount = computed(() => {
+  return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.waitAuditCount ?? 0;
+});
+const completedReleaseCount = computed(() => {
+  return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.completedReleaseCount ?? 0;
+});
+
+function openPassword(item: API.GetSettlementTasksQueryResultItem) {
+  form.passwordVisible = true;
+  form.showKeyboard = true;
+  form.id = item.id;
+}
+
+function complete(value: string) {
+  form.passwordVisible = false;
+  buildOperatorToken(value);
+}
+
+async function buildOperatorToken(value: string) {
+  try {
+    let params: API.BuildOperatorTokenCommand = {
+      password: value,
+    };
+    let res = await userServices.buildOperatorToken(params);
+    if (res) {
+      goSettleManageDetail(form.id, res.operatorToken);
+    }
+  } catch (error) {
+    form.showKeyboard = false;
+  } finally {
+    form.password = '';
+    form.showKeyboard = false;
+  }
+}
+
+async function goSettleManageDetail(id: string, operatorToken: string) {
+  Taro.navigateTo({
+    url: `${RouterPath.settleManageDetail}?id=${id}&operatorToken=${operatorToken}`,
+  });
+}
+</script>
+
+<style lang="scss">
+@import '@/styles/common.scss';
+
+.settleManage-page-wrapper {
+  .settle-manage-list {
+    .income-detail-list-item-inner {
+      display: flex;
+      flex-direction: column;
+      background: #ffffff;
+      border-radius: 12px;
+      padding: 40px;
+      margin-bottom: 24px;
+    }
+  }
+}
+</style>
diff --git a/apps/underTakeMiniApp/src/subpackages/settleManage/settleManage/settleManage.config.ts b/apps/underTakeMiniApp/src/subpackages/settleManage/settleManage/settleManage.config.ts
new file mode 100644
index 0000000..305fdb1
--- /dev/null
+++ b/apps/underTakeMiniApp/src/subpackages/settleManage/settleManage/settleManage.config.ts
@@ -0,0 +1,3 @@
+export default definePageConfig({
+  disableScroll: true,
+});
diff --git a/apps/underTakeMiniApp/src/subpackages/settleManage/settleManage/settleManage.vue b/apps/underTakeMiniApp/src/subpackages/settleManage/settleManage/settleManage.vue
new file mode 100644
index 0000000..4ae3b0a
--- /dev/null
+++ b/apps/underTakeMiniApp/src/subpackages/settleManage/settleManage/settleManage.vue
@@ -0,0 +1,13 @@
+<template>
+  <PageLayoutWithBg class="settleManage-page-wrapper" title="缁撶畻绠$悊">
+    <InnerPage />
+  </PageLayoutWithBg>
+</template>
+
+<script setup lang="ts">
+import InnerPage from './InnerPage.vue';
+
+defineOptions({
+  name: 'settleManage',
+});
+</script>
diff --git a/apps/underTakeMiniApp/src/subpackages/settleManage/settleManageDetail/InnerPage.vue b/apps/underTakeMiniApp/src/subpackages/settleManage/settleManageDetail/InnerPage.vue
new file mode 100644
index 0000000..7ab9cb3
--- /dev/null
+++ b/apps/underTakeMiniApp/src/subpackages/settleManage/settleManageDetail/InnerPage.vue
@@ -0,0 +1,289 @@
+<template>
+  <LoadingLayout>
+    <ContentView>
+      <div class="settle-manage-detail-top">
+        <div class="settle-manage-detail-top-title">浠诲姟淇℃伅</div>
+        <div class="settle-manage-detail-top-content">
+          <div class="settle-manage-detail-top-content-item">
+            <div class="settle-manage-detail-top-content-item-label">浠诲姟鍚嶇О锛�</div>
+            <div class="settle-manage-detail-top-content-item-text">{{ form.name }}</div>
+          </div>
+          <div class="settle-manage-detail-top-content-item">
+            <div class="settle-manage-detail-top-content-item-label">鏈嶅姟璐归噾棰濓細</div>
+            <div class="settle-manage-detail-top-content-item-text">
+              {{ OrderUtils.getServiceFeeText(form.serviceFee, form.billingMethod) }}
+            </div>
+          </div>
+          <div class="settle-manage-detail-top-content-item">
+            <div class="settle-manage-detail-top-content-item-label">缁撶畻浜烘暟锛�</div>
+            <div class="settle-manage-detail-top-content-item-text">
+              {{ `${form.settlementCount ?? 0}浜篳 }}
+            </div>
+          </div>
+          <div class="settle-manage-detail-top-content-item">
+            <div class="settle-manage-detail-top-content-item-label">缁撶畻閲戦锛�</div>
+            <div class="settle-manage-detail-top-content-item-text">
+              {{ `${toThousand(form.settlementAmount ?? 0)}鍏僠 }}
+            </div>
+          </div>
+          <div
+            class="settle-manage-detail-top-content-item"
+            v-if="form.auditStatus !== EnumTaskSettlementAuditStatus.Wait"
+          >
+            <div class="settle-manage-detail-top-content-item-label">瀹℃牳鏃堕棿锛�</div>
+            <div class="settle-manage-detail-top-content-item-text">
+              {{ form.auditTime ? dayjs(form.auditTime).format('YYYY-MM-DD') : '' }}
+            </div>
+          </div>
+          <div
+            class="settle-manage-detail-top-content-item"
+            v-if="form.settlementStatus === EnumTaskSettlementStatus.Completed"
+          >
+            <div class="settle-manage-detail-top-content-item-label">缁撶畻鏃堕棿锛�</div>
+            <div class="settle-manage-detail-top-content-item-text">
+              {{ dayjs(form.settlementTime).format('YYYY-MM-DD') }}
+            </div>
+          </div>
+        </div>
+      </div>
+      <ChunkTitle title="浜哄憳鍒楄〃" />
+    </ContentView>
+    <InfiniteLoading
+      scrollViewClassName="common-infinite-scroll-list"
+      v-bind="infiniteLoadingProps"
+    >
+      <template #renderItem="{ item }">
+        <PayrollManageDetailCard
+          :avatar="setOSSLink(item.avatar)"
+          :name="item.name"
+          :gender="item.gender"
+          :isReal="item.isReal"
+          :totalWorkHours="item.timeoutHours"
+          :settlementAmount="item.settlementAmount"
+        >
+          <template #actions v-if="form.auditStatus === EnumTaskSettlementAuditStatus.Wait">
+            <div class="settle-manage-detail-card-actions">
+              <nut-button type="primary" plain @click="goSettleChange(item)">淇敼</nut-button>
+            </div>
+          </template>
+        </PayrollManageDetailCard>
+      </template>
+    </InfiniteLoading>
+    <PageFooter v-if="form.auditStatus === EnumTaskSettlementAuditStatus.Wait">
+      <!-- <PageFooterBtn type="primary" @click="auditTaskSettlement(EnumTaskSettlementAuditStatus.Pass)"
+        >瀹℃牳閫氳繃</PageFooterBtn
+      >
+      <PageFooterBtn
+        type="primary"
+        plain
+        @click="auditTaskSettlement(EnumTaskSettlementAuditStatus.Fail)"
+        >椹冲洖</PageFooterBtn
+      > -->
+      <PageFooterBtn type="primary" @click="auditTaskSettlement(EnumTaskSettlementAuditStatus.Pass)"
+        >纭</PageFooterBtn
+      >
+      <PageFooterBtn type="primary" plain @click="goBack">鍙栨秷</PageFooterBtn>
+    </PageFooter>
+  </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import Taro from '@tarojs/taro';
+import * as taskUserServices from '@12333/services/apiV2/taskUser';
+import * as taskServices from '@12333/services/apiV2/task';
+import { useInfiniteLoading } from '@12333/hooks';
+import {
+  EnumBillingMethodText,
+  EnumTaskSettlementAuditStatus,
+  EnumTaskSettlementStatus,
+  BillingMethodEnumUnit,
+} from '@12333/constants';
+import { Message, paginateList, setOSSLink, toThousand, OrderUtils } from '@12333/utils';
+import { useQuery } from '@tanstack/vue-query';
+import dayjs from 'dayjs';
+import { goBack } from '@/utils';
+import { ChunkTitle, PayrollManageDetailCard } from '@12333/components';
+
+defineOptions({
+  name: 'InnerPage',
+});
+
+const router = Taro.useRouter();
+const id = router.params?.id ?? '';
+const operatorToken = router.params?.operatorToken ?? '';
+
+const form = reactive({
+  name: '',
+  serviceFee: 0,
+  settlementCount: 0,
+  settlementAmount: 0,
+  settlementTime: '',
+  auditTime: '',
+  auditStatus: 0,
+  billingMethod: 0,
+  settlementStatus: 0,
+
+  settlementTaskUsers: [] as API.GetSettlementTaskUsersQueryResultItem[],
+});
+
+const state = reactive({
+  isLoaded: false,
+});
+
+const {
+  isLoading,
+  isError,
+  data: detail,
+  refetch,
+} = useQuery({
+  queryKey: ['taskUserServices/getSettlementTaskUsers', id, operatorToken],
+  queryFn: async () => {
+    let res = await taskUserServices.getSettlementTaskUsers(
+      { id: id, operatorToken: operatorToken },
+      {
+        showLoading: false,
+      }
+    );
+    if (res) {
+      form.name = res.detail?.name;
+      form.serviceFee = res.detail?.serviceFee;
+      form.settlementCount = res.data?.length;
+      form.settlementAmount = res.detail?.settlementAmount;
+      form.settlementTime = res.detail?.settlementTime;
+      form.auditTime = res.detail?.auditTime;
+      form.auditStatus = res.detail?.auditStatus;
+      form.settlementStatus = res.detail?.settlementStatus;
+      form.billingMethod = res.detail?.billingMethod;
+    }
+    return res;
+  },
+  placeholderData: () => ({} as API.GetSettlementTaskUsersQueryResult),
+  onSuccess(res) {
+    if (!state.isLoaded) {
+      form.settlementTaskUsers = res?.data ?? [];
+      state.isLoaded = true;
+    }
+  },
+});
+
+const { infiniteLoadingProps, invalidateQueries } = useInfiniteLoading(
+  ({ pageParam }) => {
+    let params: API.GetCheckReceiveTaskQuery = {
+      pageModel: {
+        rows: 20,
+        page: pageParam,
+      },
+    };
+
+    return Promise.resolve({
+      pageModel: {
+        rows: 20,
+        page: pageParam,
+        totalCount: form.settlementTaskUsers.length,
+      },
+      data: paginateList(form.settlementTaskUsers, pageParam, 20),
+    });
+  },
+  {
+    enabled: computed(() => form.settlementTaskUsers?.length > 0),
+  }
+);
+
+async function auditTaskSettlement(auditStatus: EnumTaskSettlementAuditStatus) {
+  try {
+    let params: API.AuditTaskSettlementCommand = {
+      id: id,
+      operatorToken: operatorToken,
+      auditStatus: auditStatus,
+      rosters: form.settlementTaskUsers.map((item) => ({
+        id: item.id,
+        serviceFee: item.serviceFee,
+        timeoutHours: item.timeoutHours,
+        timeoutFee: item.timeoutFee,
+        otherFee: item.otherFee,
+        remark: item.remark,
+        settlementAmount: item.settlementAmount,
+      })),
+    };
+    // if(auditStatus===EnumTaskSettlementAuditStatus.Pass){
+    //   params.rosters
+    // }
+    let res = await taskServices.auditTaskSettlement(params);
+    if (res) {
+      Message.success('鎿嶄綔鎴愬姛', {
+        onClosed() {
+          goBack();
+        },
+      });
+    }
+  } catch (error) {}
+}
+
+function goSettleChange(item: API.GetSettlementTaskUsersQueryResultItem) {
+  Taro.navigateTo({
+    url: `${RouterPath.settleChange}?orderRosterId=${item.id}&settleId=${id}&operatorToken=${operatorToken}`,
+    events: {
+      update: function (params: API.EditTaskSettlementOrderRosterCommand) {
+        // refetch();
+        form.settlementTaskUsers = form.settlementTaskUsers.map((item) => {
+          if (item.id == params.id) {
+            item.settlementAmount = params.settlementAmount;
+            item.actualSettlementAmount = params.actualSettlementAmount;
+            item.receiveAccount = params.receiveAccount;
+            item.bank = params.bank;
+            item.serviceFee = params.serviceFee;
+            item.timeoutHours = params.timeoutHours;
+            item.timeoutFee = params.timeoutFee;
+            item.otherFee = params.otherFee;
+            item.remark = params.remark;
+            return item;
+          }
+          return item;
+        });
+      },
+    },
+  });
+}
+</script>
+
+<style lang="scss">
+@import '@/styles/common.scss';
+
+.settleManageDetail-page-wrapper {
+  .settle-manage-detail-top {
+    padding: 24px 32px;
+    margin-bottom: 24px;
+    background-color: #fff;
+    border-radius: 12px;
+
+    .settle-manage-detail-top-title {
+      font-size: 32px;
+      font-weight: bold;
+      margin-bottom: 14px;
+    }
+
+    .settle-manage-detail-top-content {
+      .settle-manage-detail-top-content-item {
+        font-size: 24px;
+        line-height: 40px;
+
+        .settle-manage-detail-top-content-item-label {
+          display: inline-flex;
+          color: boleGetCssVar('text-color', 'primary');
+        }
+
+        .settle-manage-detail-top-content-item-text {
+          display: inline-flex;
+          color: boleGetCssVar('text-color', 'regular');
+        }
+      }
+    }
+  }
+
+  .settle-manage-detail-card-actions {
+    --nut-button-default-height: 24px;
+
+    text-align: right;
+  }
+}
+</style>
diff --git a/apps/underTakeMiniApp/src/subpackages/settleManage/settleManageDetail/settleManageDetail.config.ts b/apps/underTakeMiniApp/src/subpackages/settleManage/settleManageDetail/settleManageDetail.config.ts
new file mode 100644
index 0000000..305fdb1
--- /dev/null
+++ b/apps/underTakeMiniApp/src/subpackages/settleManage/settleManageDetail/settleManageDetail.config.ts
@@ -0,0 +1,3 @@
+export default definePageConfig({
+  disableScroll: true,
+});
diff --git a/apps/underTakeMiniApp/src/subpackages/settleManage/settleManageDetail/settleManageDetail.vue b/apps/underTakeMiniApp/src/subpackages/settleManage/settleManageDetail/settleManageDetail.vue
new file mode 100644
index 0000000..dba57ed
--- /dev/null
+++ b/apps/underTakeMiniApp/src/subpackages/settleManage/settleManageDetail/settleManageDetail.vue
@@ -0,0 +1,13 @@
+<template>
+  <PageLayoutWithBg class="settleManageDetail-page-wrapper" title="缁撶畻璇︽儏">
+    <InnerPage />
+  </PageLayoutWithBg>
+</template>
+
+<script setup lang="ts">
+import InnerPage from './InnerPage.vue';
+
+defineOptions({
+  name: 'settleManageDetail',
+});
+</script>
diff --git a/apps/underTakeMiniApp/src/subpackages/task/components/TaskCheckCard.vue b/apps/underTakeMiniApp/src/subpackages/task/components/TaskCheckCard.vue
index eb1e5e3..c879a59 100644
--- a/apps/underTakeMiniApp/src/subpackages/task/components/TaskCheckCard.vue
+++ b/apps/underTakeMiniApp/src/subpackages/task/components/TaskCheckCard.vue
@@ -1,5 +1,5 @@
 <template>
-  <div class="task-check-card-wrapper" @click.stop="emit('checkReceive')">
+  <div class="task-check-card-wrapper">
     <TaskCheckPersonalView
       class="task-check-card-view"
       :avatar="avatar"
@@ -9,12 +9,47 @@
       :contactPhoneNumber="contactPhoneNumber"
     >
       <template #actions>
-        <div
-          class="task-check-card-phone-status"
-          :style="{ color: EnumTaskCheckReceiveStatusColor[checkReceiveStatus] }"
+        <template
+          v-if="
+            (checkReceiveStatus === EnumTaskCheckReceiveStatus.WaitCheckReceive ||
+              checkReceiveStatus === EnumTaskCheckReceiveStatus.WaitSubmit) &&
+            isInternal
+          "
         >
-          {{ EnumTaskCheckReceiveStatusText[checkReceiveStatus] }}
-        </div>
+          <template v-if="OrderUtils.isContainCheckIn(checkReceiveMethods)">
+            <nut-button
+              v-if="
+                !checkHistoryType || checkHistoryType === EnumTaskUserSubmitCheckHistoryType.CheckIn
+              "
+              type="primary"
+              class="task-check-card-phone-btn"
+              @click.stop="handleMore"
+              >鎿嶄綔</nut-button
+            >
+            <nut-button
+              v-else
+              type="primary"
+              class="task-check-card-phone-btn"
+              @click.stop="emit('checkReceive')"
+              >楠屾敹</nut-button
+            >
+          </template>
+          <nut-button
+            v-else
+            type="primary"
+            class="task-check-card-phone-btn"
+            @click.stop="emit('checkReceive')"
+            >楠屾敹</nut-button
+          >
+        </template>
+        <template v-else>
+          <div
+            class="task-check-card-phone-status"
+            :style="{ color: EnumTaskCheckReceiveStatusColor[checkReceiveStatus] }"
+          >
+            {{ EnumTaskCheckReceiveStatusText[checkReceiveStatus] }}
+          </div>
+        </template>
       </template>
     </TaskCheckPersonalView>
   </div>
@@ -29,6 +64,7 @@
   EnumTaskCheckReceiveMethod,
   EnumGetCheckReceiveTasksQueryResultItemCheckStatus,
   EnumTaskUserSubmitCheckReceiveStatus,
+  EnumTaskUserSubmitCheckHistoryType,
   EnumTaskCheckReceiveStatusColor,
 } from '@12333/constants';
 import { TaskCheckPersonalView } from '@12333/components';
@@ -61,34 +97,38 @@
   checkReceiveMethods?: EnumTaskCheckReceiveMethod[];
 
   submitCheckReceiveStatus?: EnumTaskUserSubmitCheckReceiveStatus;
+
+  checkHistoryType?: EnumTaskUserSubmitCheckHistoryType;
+
+  isInternal?: boolean;
 };
 
 const props = withDefaults(defineProps<Props>(), {});
 
 const emit = defineEmits<{
   (e: 'checkReceive'): void;
-  (e: 'checkInOrOut', ev: EnumTaskUserSubmitCheckReceiveStatus): void;
+  (e: 'checkInOrOut', ev: EnumTaskUserSubmitCheckHistoryType): void;
 }>();
 
 const menuList = computed(() => {
   let _menuList = [];
-  // if (props.checkReceiveMethod === EnumTaskCheckReceiveMethod.CheckIn) {
-  _menuList.push({
-    name: '鏈埌宀�',
-    value: ManageActions.OutWork,
-  });
-  if (!props.checkInTime) {
+  if (OrderUtils.isContainCheckIn(props.checkReceiveMethods)) {
+    if (!props.checkInTime) {
+      _menuList.push({
+        name: '绛惧埌',
+        value: ManageActions.CheckIn,
+      });
+    } else if (!props.checkOutTime) {
+      _menuList.push({
+        name: '绛惧嚭',
+        value: ManageActions.CheckOut,
+      });
+    }
     _menuList.push({
-      name: '绛惧埌',
-      value: ManageActions.CheckIn,
-    });
-  } else if (!props.checkOutTime) {
-    _menuList.push({
-      name: '绛惧嚭',
-      value: ManageActions.CheckOut,
+      name: '鏈埌宀�',
+      value: ManageActions.OutWork,
     });
   }
-  // }
 
   return _menuList;
 });
@@ -118,13 +158,13 @@
 function handleEmit(action: { name: string; value: number }) {
   switch (action.value) {
     case ManageActions.CheckIn:
-      emit('checkInOrOut', EnumTaskUserSubmitCheckReceiveStatus.WaitCheckReceive);
+      emit('checkInOrOut', EnumTaskUserSubmitCheckHistoryType.CheckIn);
       break;
     case ManageActions.CheckOut:
-      emit('checkInOrOut', EnumTaskUserSubmitCheckReceiveStatus.Success);
+      emit('checkInOrOut', EnumTaskUserSubmitCheckHistoryType.CheckOut);
       break;
     case ManageActions.OutWork:
-      emit('checkInOrOut', EnumTaskUserSubmitCheckReceiveStatus.Fail);
+      emit('checkInOrOut', EnumTaskUserSubmitCheckHistoryType.UnCheckIn);
       break;
   }
 }
diff --git a/apps/underTakeMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue b/apps/underTakeMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue
index a78887e..8d7bc09 100644
--- a/apps/underTakeMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue
+++ b/apps/underTakeMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue
@@ -16,7 +16,7 @@
       <template #renderItem="{ item }">
         <TaskCheckCard
           :avatar="setOSSLink(item.avatar)"
-          :name="item.name"
+          :name="item.name ?? ''"
           :gender="item.gender"
           :isReal="item.isReal"
           :checkInTime="item.checkInTime"
@@ -25,6 +25,10 @@
           :checkReceiveStatus="item.checkReceiveStatus"
           :checkReceiveMethods="detail?.checkReceiveMethods"
           :submitCheckReceiveStatus="item.submitCheckReceiveStatus"
+          :checkHistoryType="item.checkHistoryType"
+          :isInternal="detail?.isInternal"
+          @checkReceive="goTaskDetail(item)"
+          @checkInOrOut="(ev) => checkReceiveTask(ev, item)"
         />
       </template>
     </InfiniteLoading>
@@ -40,6 +44,7 @@
 import {
   EnumTaskCheckReceiveMethod,
   EnumTaskCheckReceiveStatus,
+  EnumTaskUserSubmitCheckHistoryType,
   EnumTaskUserSubmitCheckReceiveStatus,
 } from '@12333/constants';
 import { Message, setOSSLink, toRound } from '@12333/utils';
@@ -54,7 +59,7 @@
 const date = router.params?.date ?? '';
 const checkReceiveStatus = Number(router.params?.checkReceiveStatus);
 
-const detail = ref<API.GetCheckReceiveTasksQueryResultItem>();
+const detail = ref<API.GetCheckReceiveTaskQueryResultObjectData>();
 
 const { infiniteLoadingProps } = useInfiniteLoading(
   async ({ pageParam }) => {
@@ -78,6 +83,30 @@
     queryKey: ['taskCheckReceiveServices/getCheckReceiveTask'],
   }
 );
+
+function goTaskDetail(item: API.GetCheckReceiveTaskQueryResultItem) {
+  Taro.navigateTo({
+    url: `${RouterPath.taskHandleCheckDetail}?id=${item.id}&date=${date}&taskInfoId=${id}`,
+  });
+}
+
+async function checkReceiveTask(
+  ev: EnumTaskUserSubmitCheckHistoryType,
+  item: API.GetCheckReceiveTaskQueryResultItem
+) {
+  try {
+    let params: API.CheckReceiveTaskCommand = {
+      taskInfoUserId: item.id,
+      date: dayjs(date).format('YYYY-MM-DD'),
+      checkHistoryType: ev,
+    };
+    let res = await taskCheckReceiveServices.checkReceiveTask(params);
+    if (res) {
+      Message.success('鎻愪氦鎴愬姛');
+      infiniteLoadingProps.value?.refetch?.();
+    }
+  } catch (error) {}
+}
 </script>
 <style lang="scss">
 @import '@/styles/common.scss';
diff --git a/apps/bMiniApp/src/subpackages/payrollManage/components/PayrollManageDetailCard.vue b/packages/components/src/Card/PayrollManageDetailCard.vue
similarity index 97%
rename from apps/bMiniApp/src/subpackages/payrollManage/components/PayrollManageDetailCard.vue
rename to packages/components/src/Card/PayrollManageDetailCard.vue
index 73231b3..e1a5a51 100644
--- a/apps/bMiniApp/src/subpackages/payrollManage/components/PayrollManageDetailCard.vue
+++ b/packages/components/src/Card/PayrollManageDetailCard.vue
@@ -21,7 +21,7 @@
 </template>
 
 <script setup lang="ts">
-import { FlexJobTopView } from '@12333/components';
+import FlexJobTopView from './FlexJobTopView.vue';
 import { EnumUserGender } from '@12333/constants';
 import { toThousand } from '@12333/utils';
 
diff --git a/packages/components/src/index.ts b/packages/components/src/index.ts
index 7da8f07..b72256e 100644
--- a/packages/components/src/index.ts
+++ b/packages/components/src/index.ts
@@ -36,6 +36,7 @@
 export { default as TaskCheckPersonalView } from './Card/TaskCheckPersonalView.vue';
 export { default as TaskCheckHistoryCard } from './Card/TaskCheckHistoryCard.vue';
 export { default as FlexJobTopView } from './Card/FlexJobTopView.vue';
+export { default as PayrollManageDetailCard } from './Card/PayrollManageDetailCard.vue';
 export { default as QueryMenuView } from './Menu/QueryMenuView.vue';
 export { default as QueryMenuItem } from './Menu/QueryMenuItem.vue';
 export { default as ProRadio } from './Form/ProRadio.vue';
diff --git a/packages/constants/apiEnum.ts b/packages/constants/apiEnum.ts
index fddf11c..c684e71 100644
--- a/packages/constants/apiEnum.ts
+++ b/packages/constants/apiEnum.ts
@@ -143,6 +143,14 @@
   ElectronSign = 20,
 }
 
+/** 鐏靛伐鏉ユ簮 */
+export enum EnumEnterpriseEmployeeSource {
+  /**鍐呴儴 */
+  Internal = 10,
+  /**澶栭儴 */
+  External = 20,
+}
+
 /** 浼佷笟瀹炲悕鏂瑰紡 */
 export enum EnumEnterpriseRealMethod {
   /**浼佷笟涓夎绱� */
@@ -401,44 +409,46 @@
   CommonServerCodeUrls = 4,
   /**鏂囦欢 */
   CommonServerFileUtils = 5,
+  /**浜嬩欢 */
+  CommonServerEventUtils = 6,
   /**鏂囧瓧璇嗗埆 */
-  CommonServerOcrUtils = 6,
+  CommonServerOcrUtils = 7,
   /**鏃ュ織璁板綍 */
-  CommonServerLogRecords = 7,
+  CommonServerLogRecords = 8,
   /**鍚屾鏁版嵁搴� */
-  CommonServerSyncDatabase = 8,
+  CommonServerSyncDatabase = 9,
   /**鐭俊宸ュ叿 */
-  CommonServerSmsUtils = 9,
+  CommonServerSmsUtils = 10,
   /**閰嶇疆 */
-  CommonServerSettings = 10,
+  CommonServerSettings = 11,
   /**鐢ㄦ埛璁よ瘉 */
-  UserServerAuth = 11,
+  UserServerAuth = 12,
   /**鐢ㄦ埛鑿滃崟 */
-  UserServerMenu = 12,
+  UserServerMenu = 13,
   /**鐢ㄦ埛璧勬簮 */
-  UserServerResource = 13,
+  UserServerResource = 14,
   /**鐢ㄦ埛瑙掕壊 */
-  UserServerRole = 14,
+  UserServerRole = 15,
   /**鐢ㄦ埛淇℃伅 */
-  UserServerUser = 15,
+  UserServerUser = 16,
   /**鐢ㄦ埛閽卞寘 */
-  UserServerUserWallet = 16,
+  UserServerUserWallet = 17,
   /**鐢靛瓙绛� */
-  UserServerElectronSign = 17,
+  UserServerElectronSign = 18,
   /**鐢ㄦ埛绠�鍘� */
-  UserServerUserResume = 18,
+  UserServerUserResume = 19,
   /**浼佷笟淇℃伅 */
-  UserServerEnterprise = 19,
+  UserServerEnterprise = 20,
   /**浼佷笟閽卞寘 */
-  UserServerEnterpriseWallet = 20,
+  UserServerEnterpriseWallet = 21,
   /**浼佷笟鍚堜綔閽卞寘 */
-  UserServerEnterpriseCooperationWallet = 21,
+  UserServerEnterpriseCooperationWallet = 22,
   /**鐏靛伐淇℃伅 */
-  UserServerEnterpriseEmployee = 22,
+  UserServerEnterpriseEmployee = 23,
   /**鐢靛瓙绛� */
-  ElectronSignServerElectronSign = 23,
+  ElectronSignServerElectronSign = 24,
   /**鐢靛瓙绛� */
-  ToolServerSms = 24,
+  ToolServerSms = 25,
 }
 
 /** 璧勬簮璇锋眰鏂瑰紡 */
diff --git a/packages/services/apiV2/enterpriseEmployee.ts b/packages/services/apiV2/enterpriseEmployee.ts
index 622e474..c1a0c1e 100644
--- a/packages/services/apiV2/enterpriseEmployee.ts
+++ b/packages/services/apiV2/enterpriseEmployee.ts
@@ -2,6 +2,21 @@
 // @ts-ignore
 import { request } from '@/utils/request';
 
+/** 娣诲姞鐏靛伐淇℃伅 POST /api/user/enterpriseEmployee/addEnterpriseEmployee */
+export async function addEnterpriseEmployee(
+  body: API.AddEnterpriseEmployeeCommand,
+  options?: API.RequestConfig
+) {
+  return request<string>('/api/user/enterpriseEmployee/addEnterpriseEmployee', {
+    method: 'POST',
+    headers: {
+      'Content-Type': 'application/json-patch+json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
+
 /** 浼佷笟鎵归噺绛剧害鍚堝悓 POST /api/user/enterpriseEmployee/batchEnterpriseSignContract */
 export async function batchEnterpriseSignContract(
   body: API.BatchEnterpriseSignContractCommand,
@@ -176,6 +191,21 @@
   );
 }
 
+/** 淇1.3.0.2鐗堟湰鐏靛伐鏁版嵁 POST /api/user/enterpriseEmployee/repairEnterpriseEmployee_1_3_0_2 */
+export async function repairEnterpriseEmployee1302(
+  body: API.RepairEnterpriseEmployee1302Command,
+  options?: API.RequestConfig
+) {
+  return request<boolean>('/api/user/enterpriseEmployee/repairEnterpriseEmployee_1_3_0_2', {
+    method: 'POST',
+    headers: {
+      'Content-Type': 'application/json-patch+json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
+
 /** 鍙戦�侀個璇风绾︾煭淇� POST /api/user/enterpriseEmployee/sendInviteElectronSignSms */
 export async function sendInviteElectronSignSms(
   body: API.SendInviteElectronSignSmsCommand,
diff --git a/packages/services/apiV2/eventUtils.ts b/packages/services/apiV2/eventUtils.ts
new file mode 100644
index 0000000..28ccc69
--- /dev/null
+++ b/packages/services/apiV2/eventUtils.ts
@@ -0,0 +1,15 @@
+/* eslint-disable */
+// @ts-ignore
+import { request } from '@/utils/request';
+
+/** 娴嬭瘯浜嬩欢 POST /api/common/eventUtils/testEvent */
+export async function testEvent(body: API.TestEventCommand, options?: API.RequestConfig) {
+  return request<boolean>('/api/common/eventUtils/testEvent', {
+    method: 'POST',
+    headers: {
+      'Content-Type': 'application/json-patch+json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
diff --git a/packages/services/apiV2/index.ts b/packages/services/apiV2/index.ts
index 20f31ac..b5aa93e 100644
--- a/packages/services/apiV2/index.ts
+++ b/packages/services/apiV2/index.ts
@@ -9,15 +9,16 @@
 import * as task from './task';
 import * as enterpriseWallet from './enterpriseWallet';
 import * as ocrUtils from './ocrUtils';
+import * as electronSign from './electronSign';
 import * as resource from './resource';
-import * as enterpriseCooperationWallet from './enterpriseCooperationWallet';
 import * as logRecords from './logRecords';
 import * as dictionary from './dictionary';
 import * as taskCheckReceive from './taskCheckReceive';
-import * as electronSign from './electronSign';
 import * as userResume from './userResume';
 import * as auth from './auth';
 import * as taskUser from './taskUser';
+import * as eventUtils from './eventUtils';
+import * as enterpriseCooperationWallet from './enterpriseCooperationWallet';
 import * as codeUrl from './codeUrl';
 import * as syncDatabase from './syncDatabase';
 import * as menu from './menu';
@@ -33,15 +34,16 @@
   task,
   enterpriseWallet,
   ocrUtils,
+  electronSign,
   resource,
-  enterpriseCooperationWallet,
   logRecords,
   dictionary,
   taskCheckReceive,
-  electronSign,
   userResume,
   auth,
   taskUser,
+  eventUtils,
+  enterpriseCooperationWallet,
   codeUrl,
   syncDatabase,
   menu,
diff --git a/packages/services/apiV2/typings.d.ts b/packages/services/apiV2/typings.d.ts
index f91f135..7f82d01 100644
--- a/packages/services/apiV2/typings.d.ts
+++ b/packages/services/apiV2/typings.d.ts
@@ -3,6 +3,28 @@
     [key: string]: any;
   }
 
+  interface AddEnterpriseEmployeeCommand {
+    /** 濮撳悕 */
+    name: string;
+    /** 韬唤璇佸彿 */
+    identity: string;
+    /** 鎵嬫満鍙� */
+    contactPhoneNumber: string;
+    gender?: EnumUserGender;
+    /** 骞撮緞 */
+    age?: number;
+    /** 韬唤璇佷汉鍍忛潰 */
+    identityImg?: string;
+    /** 韬唤璇佸浗寰介潰 */
+    identityBackImg?: string;
+    /** 鐢靛瓙鍚堝悓 */
+    contractUrl?: string;
+    /** 鍗忚璧峰鏃堕棿 */
+    contractBegin?: string;
+    /** 鍗忚缁堟鏃堕棿 */
+    contractEnd?: string;
+  }
+
   interface AgainSureTaskSettlementOrderRosterCommand {
     /** 鍚嶅崟Id */
     id?: string;
@@ -200,6 +222,8 @@
   interface APIgetMenusParams {
     /** 鐢ㄦ埛绫诲瀷 */
     userType?: EnumUserType;
+    /** 浼佷笟绫诲瀷 */
+    enterpriseType?: EnumEnterpriseType;
     /** 瀹㈡埛绔被鍨� */
     clientType?: EnumClientType;
     /** 瑙掕壊Id */
@@ -646,6 +670,8 @@
   }
 
   interface EditEnterpriseEmployeeCommand {
+    /** Id */
+    id?: string;
     /** 濮撳悕 */
     name: string;
     /** 韬唤璇佸彿 */
@@ -659,8 +685,12 @@
     identityImg?: string;
     /** 韬唤璇佸浗寰介潰 */
     identityBackImg?: string;
-    /** Id */
-    id?: string;
+    /** 鐢靛瓙鍚堝悓 */
+    contractUrl?: string;
+    /** 鍗忚璧峰鏃堕棿 */
+    contractBegin?: string;
+    /** 鍗忚缁堟鏃堕棿 */
+    contractEnd?: string;
   }
 
   interface EditTaskSettlementOrderRosterCommand {
@@ -880,6 +910,13 @@
     SMS = 10,
     /**鐢靛瓙绛� */
     ElectronSign = 20,
+  }
+
+  enum EnumEnterpriseEmployeeSource {
+    /**鍐呴儴 */
+    Internal = 10,
+    /**澶栭儴 */
+    External = 20,
   }
 
   enum EnumEnterpriseRealMethod {
@@ -1116,44 +1153,46 @@
     CommonServerCodeUrls = 4,
     /**鏂囦欢 */
     CommonServerFileUtils = 5,
+    /**浜嬩欢 */
+    CommonServerEventUtils = 6,
     /**鏂囧瓧璇嗗埆 */
-    CommonServerOcrUtils = 6,
+    CommonServerOcrUtils = 7,
     /**鏃ュ織璁板綍 */
-    CommonServerLogRecords = 7,
+    CommonServerLogRecords = 8,
     /**鍚屾鏁版嵁搴� */
-    CommonServerSyncDatabase = 8,
+    CommonServerSyncDatabase = 9,
     /**鐭俊宸ュ叿 */
-    CommonServerSmsUtils = 9,
+    CommonServerSmsUtils = 10,
     /**閰嶇疆 */
-    CommonServerSettings = 10,
+    CommonServerSettings = 11,
     /**鐢ㄦ埛璁よ瘉 */
-    UserServerAuth = 11,
+    UserServerAuth = 12,
     /**鐢ㄦ埛鑿滃崟 */
-    UserServerMenu = 12,
+    UserServerMenu = 13,
     /**鐢ㄦ埛璧勬簮 */
-    UserServerResource = 13,
+    UserServerResource = 14,
     /**鐢ㄦ埛瑙掕壊 */
-    UserServerRole = 14,
+    UserServerRole = 15,
     /**鐢ㄦ埛淇℃伅 */
-    UserServerUser = 15,
+    UserServerUser = 16,
     /**鐢ㄦ埛閽卞寘 */
-    UserServerUserWallet = 16,
+    UserServerUserWallet = 17,
     /**鐢靛瓙绛� */
-    UserServerElectronSign = 17,
+    UserServerElectronSign = 18,
     /**鐢ㄦ埛绠�鍘� */
-    UserServerUserResume = 18,
+    UserServerUserResume = 19,
     /**浼佷笟淇℃伅 */
-    UserServerEnterprise = 19,
+    UserServerEnterprise = 20,
     /**浼佷笟閽卞寘 */
-    UserServerEnterpriseWallet = 20,
+    UserServerEnterpriseWallet = 21,
     /**浼佷笟鍚堜綔閽卞寘 */
-    UserServerEnterpriseCooperationWallet = 21,
+    UserServerEnterpriseCooperationWallet = 22,
     /**鐏靛伐淇℃伅 */
-    UserServerEnterpriseEmployee = 22,
+    UserServerEnterpriseEmployee = 23,
     /**鐢靛瓙绛� */
-    ElectronSignServerElectronSign = 23,
+    ElectronSignServerElectronSign = 24,
     /**鐢靛瓙绛� */
-    ToolServerSms = 24,
+    ToolServerSms = 25,
   }
 
   enum EnumResourceMethod {
@@ -1562,6 +1601,20 @@
     createdTimeEnd?: string;
   }
 
+  interface ExportPersonalUserTransactionEreceiptsCommand {
+    /** 鍏抽敭瀛� */
+    keywords?: string;
+    transactionStatus?: EnumWalletTransactionStatus;
+    /** 鍒涘缓鏃堕棿-璧峰 */
+    createdTimeStart?: string;
+    /** 鍒涘缓鏃堕棿-鎴 */
+    createdTimeEnd?: string;
+    /** 鐢ㄦ埛Id */
+    userId?: string;
+    /** 浼佷笟閽卞寘Id */
+    enterpriseWalletId?: string;
+  }
+
   interface ExportTaskCheckReceiveTaskUsersCommand {
     /** 浠诲姟Id */
     id?: string;
@@ -1686,6 +1739,25 @@
     /** 閿欒鐮� */
     errorCode?: string;
     data?: EnterpriseUserElectronSignCommandResult;
+    /** 鎵ц鎴愬姛 */
+    success?: boolean;
+    /** 閿欒淇℃伅 */
+    msg?: any;
+    /** 闄勫姞鏁版嵁 */
+    extras?: any;
+    /** 鏃堕棿鎴� */
+    timestamp?: number;
+  }
+
+  interface FriendlyResultFileContentResult {
+    /** 璺熻釜Id */
+    traceId?: string;
+    /** 鐘舵�佺爜 */
+    code?: number;
+    /** 閿欒鐮� */
+    errorCode?: string;
+    /** 鏁版嵁 */
+    data?: string;
     /** 鎵ц鎴愬姛 */
     success?: boolean;
     /** 閿欒淇℃伅 */
@@ -3959,11 +4031,15 @@
     /** 鐢ㄦ埛绛惧嚭鏃堕棿 */
     userCheckOutTime?: string;
     userCheckHistoryType?: EnumTaskUserSubmitCheckHistoryType;
+    /** 鐢ㄦ埛鎿嶄綔浜� */
+    userOperator?: string;
     /** 浜哄伐绛惧埌鏃堕棿 */
     checkInTime?: string;
     /** 浜哄伐绛惧嚭鏃堕棿 */
     checkOutTime?: string;
     checkHistoryType?: EnumTaskUserSubmitCheckHistoryType;
+    /** 鎿嶄綔浜� */
+    checkOperator?: string;
     /** 鎿嶄綔浜� */
     operator?: string;
     /** 鏈�杩戞彁浜ゆ椂闂� */
@@ -3977,6 +4053,8 @@
   interface GetCheckReceiveTaskQueryResultObjectData {
     /** 渚涘簲鍟咺d */
     supplierEnterpriseId?: string;
+    /** 鏄惁鍐呴儴璁㈠崟 */
+    isInternal?: boolean;
     /** 闇�姹備汉鏁� */
     needPeopleNumber?: number;
     /** 浠诲姟鍚嶇О */
@@ -4120,6 +4198,8 @@
   interface GetCheckReceiveTaskUserSubmitQueryResult {
     /** 鎻愪氦Id */
     id?: string;
+    /** 浠诲姟浜哄憳Id */
+    taskInfoUserId?: string;
     enterpriseEmployeeUser?: GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser;
     /** 楠屾敹鏃堕棿 */
     date?: string;
@@ -4131,17 +4211,35 @@
     /** 鐢ㄦ埛绛惧嚭鏃堕棿 */
     userCheckOutTime?: string;
     userCheckHistoryType?: EnumTaskUserSubmitCheckHistoryType;
+    /** 鐢ㄦ埛鎿嶄綔浜� */
+    userOperator?: string;
     /** 浜哄伐绛惧埌鏃堕棿 */
     checkInTime?: string;
     /** 浜哄伐绛惧嚭鏃堕棿 */
     checkOutTime?: string;
     checkHistoryType?: EnumTaskUserSubmitCheckHistoryType;
+    /** 鎿嶄綔浜� */
+    checkOperator?: string;
+    /** 鎿嶄綔浜� */
+    operator?: string;
     /** 楠屾敹鐓х墖 */
     files?: string[];
     /** 楠屾敹鏂瑰紡 */
     checkReceiveMethods?: EnumTaskCheckReceiveMethod[];
-    /** 瓒呮椂鏈嶅姟璐� */
+    /** 浠诲姟瓒呮椂鏈嶅姟璐瑰崟浠� */
     timeoutServiceFee?: number;
+    /** 鏈嶅姟璐癸紙鍏冿級 */
+    serviceFee?: number;
+    /** 瓒呮椂锛堝皬鏃讹級 */
+    timeoutHours?: number;
+    /** 瓒呮椂璐圭敤锛堝厓锛� */
+    timeoutFee?: number;
+    /** 鍏朵粬璐圭敤锛堝厓锛� */
+    otherFee?: number;
+    /** 澶囨敞 */
+    remark?: string;
+    /** 缁撶畻閲戦 */
+    settlementAmount?: number;
   }
 
   interface GetCheckReceiveTaskUserSubmitsQuery {
@@ -4169,11 +4267,15 @@
     /** 鐢ㄦ埛绛惧嚭鏃堕棿 */
     userCheckOutTime?: string;
     userCheckHistoryType?: EnumTaskUserSubmitCheckHistoryType;
+    /** 鐢ㄦ埛鎿嶄綔浜� */
+    userOperator?: string;
     /** 浜哄伐绛惧埌鏃堕棿 */
     checkInTime?: string;
     /** 浜哄伐绛惧嚭鏃堕棿 */
     checkOutTime?: string;
     checkHistoryType?: EnumTaskUserSubmitCheckHistoryType;
+    /** 鎿嶄綔浜� */
+    checkOperator?: string;
     /** 鎿嶄綔浜� */
     operator?: string;
     /** 鎻愪氦鏃堕棿 */
@@ -4784,8 +4886,13 @@
     /** 绛剧害鏃堕棿-鏈�鏅氭椂闂� */
     signContractTimeEnd?: string;
     hireStatus?: EnumTaskUserHireStatus;
+    /** 瀹炲悕鏃堕棿-鏈�鏃╂椂闂� */
+    userRealTimeStart?: string;
+    /** 瀹炲悕鏃堕棿-鏈�鏅氭椂闂� */
+    userRealTimeEnd?: string;
     /** 鏄惁瀹炲悕 */
     isReal?: boolean;
+    source?: EnumEnterpriseEmployeeSource;
     userSignContractStatus?: EnumTaskUserSignContractStatus;
     enterpriseSignContractStatus?: EnumTaskUserSignContractStatus;
     signContractStatus?: EnumGetEnterpriseEmployeesQuerySignContractStatus;
@@ -4844,6 +4951,14 @@
     enterpriseSignContractTime?: string;
     /** 鐢靛瓙鍚堝悓 */
     contractUrl?: string;
+    /** 鍗忚璧峰鏃堕棿 */
+    contractBegin?: string;
+    /** 鍗忚缁堟鏃堕棿 */
+    contractEnd?: string;
+    source?: EnumEnterpriseEmployeeSource;
+    /** 鏉ユ簮鍚嶇О */
+    sourceName?: string;
+    /** 鍒涘缓鏃堕棿 */
     createdTime?: string;
   }
 
@@ -5401,6 +5516,7 @@
     /** 鏄惁閫夋嫨锛堢敤鎴疯鑹叉巿鏉冿級 */
     isChecked?: boolean;
     userType?: EnumUserType;
+    enterpriseType?: EnumEnterpriseType;
     clientType?: EnumClientType;
     /** 涓婄骇Id */
     parentId?: string;
@@ -6162,6 +6278,9 @@
     settlementReceiveStatus?: SettlementReceiveStatus;
     /** 缁撶畻鏃堕棿 */
     settlementTime?: string;
+    settlementAuditStatus?: EnumTaskSettlementAuditStatus;
+    /** 瀹℃牳鏃堕棿 */
+    settlementAuditTime?: string;
     /** 浠樻浜鸿处鎴� */
     payerAccount?: string;
     /** 浠樻浜哄悕绉� */
@@ -6357,6 +6476,8 @@
     dataPower?: EnumRoleWebApiDataPower;
     /** 澶囨敞 */
     remark?: string;
+    /** 鐢ㄦ埛鏁� */
+    userCount?: number;
     /** 鑿滃崟Id */
     menuIds?: string[];
     /** 璧勬簮 */
@@ -6807,6 +6928,8 @@
     billingMethod?: EnumBillingMethod;
     /** 鏈嶅姟璐� */
     serviceFee?: number;
+    /** 棰勮鏈嶅姟璐� */
+    estimatedServiceFee?: number;
     /** 鏍稿畾宸ユ椂 */
     verifyWorkHours?: number;
     /** 瓒呮椂鏈嶅姟璐� */
@@ -7503,6 +7626,10 @@
     contactPhoneNumber?: string;
     /** 韬唤璇佸彿 */
     identity?: string;
+    /** 鍗忚璧峰鏃堕棿 */
+    contractBegin?: string;
+    /** 鍗忚缁堟鏃堕棿 */
+    contractEnd?: string;
   }
 
   interface ImportTaskSettlementOrderRostersCommand {
@@ -7854,6 +7981,8 @@
 
   type RepairContractTemplateValuePointBy1202Command = Record<string, any>;
 
+  type RepairEnterpriseEmployee1302Command = Record<string, any>;
+
   type RepairTaskEstimatedServiceFee1301Command = Record<string, any>;
 
   interface ResendResourceCommand {
@@ -8087,6 +8216,7 @@
 
   interface SaveMenuCommand {
     userType?: EnumUserType;
+    enterpriseType?: EnumEnterpriseType;
     clientType?: EnumClientType;
     /** 涓婄骇Id */
     parentId?: string;
@@ -8300,6 +8430,8 @@
     billingMethod: EnumBillingMethod;
     /** 鏈嶅姟璐� */
     serviceFee?: number;
+    /** 棰勮鏈嶅姟璐� */
+    estimatedServiceFee?: number;
     /** 鏍稿畾宸ユ椂 */
     verifyWorkHours?: number;
     /** 瓒呮椂鏈嶅姟璐� */
@@ -8842,6 +8974,8 @@
     remark?: string;
   }
 
+  type TestEventCommand = Record<string, any>;
+
   interface UpdateEnterpriseWeChatPayWalletBankAccountInfoCommand {
     /** 浼佷笟Id */
     enterpriseId?: string;
diff --git a/packages/services/apiV2/user.ts b/packages/services/apiV2/user.ts
index 00b2379..f378be8 100644
--- a/packages/services/apiV2/user.ts
+++ b/packages/services/apiV2/user.ts
@@ -47,6 +47,21 @@
   });
 }
 
+/** 瀵煎嚭涓汉鐢ㄦ埛鏀舵敮鏄庣粏鐢靛瓙鍥炲崟 POST /api/user/user/exportPersonalUserTransactionEreceipts */
+export async function exportPersonalUserTransactionEreceipts(
+  body: API.ExportPersonalUserTransactionEreceiptsCommand,
+  options?: API.RequestConfig
+) {
+  return request<string>('/api/user/user/exportPersonalUserTransactionEreceipts', {
+    method: 'POST',
+    headers: {
+      'Content-Type': 'application/json-patch+json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
+
 /** 鏌ヨ涓汉鐢ㄦ埛閾惰鍗′俊鎭� GET /api/user/user/getPersonalUserBankCard */
 export async function getPersonalUserBankCard(
   // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)

--
Gitblit v1.9.1