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