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