From acd6c55ea7b11e06130c20bcd5ffd98c8e880a1f Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期二, 12 八月 2025 16:32:18 +0800
Subject: [PATCH] Merge branch 'master' of http://120.26.58.240:8888/r/flexJobMiniApp
---
apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue | 30 +-
packages/constants/task.ts | 29 ++
apps/cMiniApp/src/subpackages/mine/mineCancel/InnerPage.vue | 27 +
apps/cMiniApp/src/subpackages/mine/mineSign/InnerPage.vue | 63 +++-
packages/services/apiV2/taskUser.ts | 32 ++
apps/cMiniApp/src/subpackages/mine/mineHire/InnerPage.vue | 67 +++-
apps/bMiniApp/project.private.config.json | 7
apps/bMiniApp/src/subpackages/jobApplicationManage/components/SignList.vue | 44 +--
packages/hooks/taskUser.ts | 39 +++
packages/hooks/index.ts | 1
packages/components/src/Card/FlexJobTopView.vue | 27 +
apps/cMiniApp/src/subpackages/curriculum/mineDetailedInfo/InnerPage.vue | 2
packages/services/apiV2/task.ts | 54 ++++
packages/services/apiV2/typings.d.ts | 248 ++++++++++++++++++
apps/bMiniApp/src/subpackages/jobApplicationManage/jobApplicationManage/InnerPage.vue | 4
packages/components/src/Card/FlexJobCard.vue | 23 +
apps/bMiniApp/src/subpackages/jobApplicationManage/components/JobDetail.vue | 6
packages/constants/apiEnum.ts | 26 +
18 files changed, 597 insertions(+), 132 deletions(-)
diff --git a/apps/bMiniApp/project.private.config.json b/apps/bMiniApp/project.private.config.json
index ed02394..57b2186 100644
--- a/apps/bMiniApp/project.private.config.json
+++ b/apps/bMiniApp/project.private.config.json
@@ -98,6 +98,13 @@
"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/subpackages/jobApplicationManage/components/JobDetail.vue b/apps/bMiniApp/src/subpackages/jobApplicationManage/components/JobDetail.vue
index e10ac35..307e0d0 100644
--- a/apps/bMiniApp/src/subpackages/jobApplicationManage/components/JobDetail.vue
+++ b/apps/bMiniApp/src/subpackages/jobApplicationManage/components/JobDetail.vue
@@ -67,7 +67,7 @@
// const props = withDefaults(defineProps<Props>(), {});
const router = Taro.useRouter();
-const taskId = router.params?.taskId;
+const id = router.params?.id;
const {
isLoading,
@@ -75,10 +75,10 @@
data: detail,
refetch,
} = useQuery({
- queryKey: ['taskServices/getTaskInfo', taskId],
+ queryKey: ['taskServices/getTaskInfo', id],
queryFn: async () => {
return await taskServices.getTaskInfo(
- { id: taskId },
+ { id: id },
{
showLoading: false,
}
diff --git a/apps/bMiniApp/src/subpackages/jobApplicationManage/components/SignList.vue b/apps/bMiniApp/src/subpackages/jobApplicationManage/components/SignList.vue
index 0bd03d2..adc2bdc 100644
--- a/apps/bMiniApp/src/subpackages/jobApplicationManage/components/SignList.vue
+++ b/apps/bMiniApp/src/subpackages/jobApplicationManage/components/SignList.vue
@@ -4,14 +4,22 @@
<FlexJobCard
:name="item.name"
:age="item.age"
- :genderType="item.genderType"
+ :gender="item.gender"
+ :avatar="item.avatar"
+ :isReal="item.isReal"
+ :personalIdentityContent="item.personalIdentityContent"
+ :educationalBackgroundContent="item.educationalBackgroundContent"
+ :taskCount="item.taskCount"
+ :workSeniority="item.workSeniority"
:workExperience="item.workExperience"
>
<template #footerLeft>
- <div class="flexJob-card-footer-text">{{ FlexTaskWorkerHireEnum[item.hireStatus] }}</div>
+ <div class="flexJob-card-footer-text">
+ {{ EnumTaskUserHireStatusText[item.hireStatus] }}
+ </div>
</template>
<template #footerRight>
- <nut-button type="primary" @click="goToJobDetail(item.userId)">鏌ョ湅璇︽儏</nut-button>
+ <nut-button type="primary" @click="goToJobDetail(item.id)">鏌ョ湅璇︽儏</nut-button>
</template>
</FlexJobCard>
</template>
@@ -19,11 +27,9 @@
</template>
<script setup lang="ts">
-import { OrderInputType } from '@12333/constants';
+import { EnumTaskUserHireStatusText } from '@12333/constants';
import { RouterPath } from '@/constants';
-import { FlexTaskWorkerHireEnum } from '@12333/constants/task';
-import { useInfiniteLoading } from '@12333/hooks';
-import * as flexWorkerServices from '@12333/services/api/FlexWorker';
+import { useTaskUserList } from '@12333/hooks';
import { FlexJobCard } from '@12333/components';
import Taro from '@tarojs/taro';
@@ -36,27 +42,11 @@
// const props = withDefaults(defineProps<Props>(), {});
const router = Taro.useRouter();
-const taskId = router.params?.taskId ?? '';
+const id = router.params?.id ?? '';
-const { infiniteLoadingProps } = useInfiniteLoading(
- ({ pageParam }) => {
- let params: API.GetFlexTaskWorkerApplyListInput = {
- flexTaskId: taskId,
- pageModel: {
- rows: 20,
- page: pageParam,
- orderInput: [{ property: 'creationTime', order: OrderInputType.Desc }],
- },
- };
-
- return flexWorkerServices.getFlexTaskWorkerApplyList(params, {
- showLoading: false,
- });
- },
- {
- queryKey: ['flexWorkerServices/getFlexTaskWorkerApplyList'],
- }
-);
+const { infiniteLoadingProps } = useTaskUserList({
+ id: id,
+});
function goToJobDetail(id: string) {
Taro.navigateTo({
diff --git a/apps/bMiniApp/src/subpackages/jobApplicationManage/jobApplicationManage/InnerPage.vue b/apps/bMiniApp/src/subpackages/jobApplicationManage/jobApplicationManage/InnerPage.vue
index d2afb15..170b4a4 100644
--- a/apps/bMiniApp/src/subpackages/jobApplicationManage/jobApplicationManage/InnerPage.vue
+++ b/apps/bMiniApp/src/subpackages/jobApplicationManage/jobApplicationManage/InnerPage.vue
@@ -107,12 +107,12 @@
function goEdit(item: API.GetTaskInfosQueryResultItem, isCopy = false) {
Taro.navigateTo({
- url: `${RouterPath.publishTask}?taskId=${item.id}&isCopy=${isCopy}`,
+ url: `${RouterPath.publishTask}?id=${item.id}&isCopy=${isCopy}`,
});
}
function goDetail(item: API.GetTaskInfosQueryResultItem) {
Taro.navigateTo({
- url: `${RouterPath.jobApplicationDetail}?taskId=${item.id}`,
+ url: `${RouterPath.jobApplicationDetail}?id=${item.id}`,
});
}
</script>
diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue
index 6aaee7d..87a0c9d 100644
--- a/apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue
@@ -18,18 +18,20 @@
>
<nut-switch v-model="form.isForever" />
</nut-form-item>
- <nut-form-item label="寮�濮嬫棩鏈�:" class="bole-form-item" prop="startDate">
- <ChooseInputWithDatePicker
- v-model="form.startDate"
- placeholder="璇烽�夋嫨寮�濮嬫棩鏈�"
- ></ChooseInputWithDatePicker>
- </nut-form-item>
- <nut-form-item label="缁撴潫鏃ユ湡:" class="bole-form-item" prop="endDate">
- <ChooseInputWithDatePicker
- v-model="form.endDate"
- placeholder="璇烽�夋嫨缁撴潫鏃ユ湡"
- ></ChooseInputWithDatePicker>
- </nut-form-item>
+ <template v-if="!form.isForever">
+ <nut-form-item label="寮�濮嬫棩鏈�:" class="bole-form-item" prop="startDate">
+ <ChooseInputWithDatePicker
+ v-model="form.startDate"
+ placeholder="璇烽�夋嫨寮�濮嬫棩鏈�"
+ ></ChooseInputWithDatePicker>
+ </nut-form-item>
+ <nut-form-item label="缁撴潫鏃ユ湡:" class="bole-form-item" prop="endDate">
+ <ChooseInputWithDatePicker
+ v-model="form.endDate"
+ placeholder="璇烽�夋嫨缁撴潫鏃ユ湡"
+ ></ChooseInputWithDatePicker>
+ </nut-form-item>
+ </template>
<nut-form-item label="鍙戣瘉鍗曚綅:" class="bole-form-item" prop="issueUnit">
<nut-input v-model="form.issueUnit" placeholder="璇疯緭鍏�"> </nut-input>
</nut-form-item>
@@ -159,8 +161,8 @@
typeCode: form.typeCode,
code: form.code,
isForever: form.isForever,
- startDate: dayjs(form.startDate).format('YYYY-MM-DD 00:00:00'),
- endDate: dayjs(form.endDate).format('YYYY-MM-DD 23:59:59'),
+ startDate: form.isForever ? '' : dayjs(form.startDate).format('YYYY-MM-DD 00:00:00'),
+ endDate: form.isForever ? '' : dayjs(form.endDate).format('YYYY-MM-DD 23:59:59'),
issueUnit: form.issueUnit,
img: form.img?.[0]?.path,
backImg: form.backImg?.[0]?.path,
diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineDetailedInfo/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineDetailedInfo/InnerPage.vue
index 07085f8..e4d1581 100644
--- a/apps/cMiniApp/src/subpackages/curriculum/mineDetailedInfo/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/curriculum/mineDetailedInfo/InnerPage.vue
@@ -73,7 +73,7 @@
try {
let params: API.SaveUserResumeDetailCommand = {
weight: form.weight,
- height: form.weight,
+ height: form.height,
photos: form.photos?.length ? form.photos.map((x) => x.path) : [],
};
let res = await userResumeServices.saveUserResumeDetail(params);
diff --git a/apps/cMiniApp/src/subpackages/mine/mineCancel/InnerPage.vue b/apps/cMiniApp/src/subpackages/mine/mineCancel/InnerPage.vue
index 6853486..122a79d 100644
--- a/apps/cMiniApp/src/subpackages/mine/mineCancel/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/mine/mineCancel/InnerPage.vue
@@ -4,7 +4,16 @@
v-bind="infiniteLoadingProps"
>
<template #renderItem="{ item }">
- <TaskCard>
+ <TaskCard
+ :name="item.name"
+ :begin-time="item.beginTime"
+ :end-time="item.endTime"
+ :billing-method="item.billingMethod"
+ :benefits="item.benefits"
+ :service-fee="item.serviceFee"
+ :settlement-cycle="item.settlementCycle"
+ :address-name="item.addressName"
+ >
<template #actions>
<div class="task-card-actions-text">{{ '宸插彇娑�' }}</div>
</template>
@@ -15,33 +24,29 @@
<script setup lang="ts">
import { TaskCard } from '@12333/components';
-import { useUserStore } from '@/stores/modules/user';
import { useInfiniteLoading } from '@12333/hooks';
-import { OrderInputType } from '@12333/constants';
-import * as flexWorkerServices from '@12333/services/api/FlexWorker';
+import { EnumPagedListOrder } from '@12333/constants';
+import * as taskServices from '@12333/services/apiV2/task';
defineOptions({
name: 'InnerPage',
});
-const userStore = useUserStore();
-
const { infiniteLoadingProps } = useInfiniteLoading(
({ pageParam }) => {
- let params: API.GetFlexTaskListInput = {
+ let params: API.GetPersonalCancelTaskInfosQuery = {
pageModel: {
rows: 20,
page: pageParam,
- orderInput: [{ property: 'creationTime', order: OrderInputType.Desc }],
+ orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
},
};
-
- return flexWorkerServices.getFlexTaskByArrange(params, {
+ return taskServices.getPersonalCancelTaskInfos(params, {
showLoading: false,
});
},
{
- queryKey: ['flexWorkerServices/getFlexTaskByArrange'],
+ queryKey: ['taskServices/getPersonalCancelTaskInfos'],
}
);
</script>
diff --git a/apps/cMiniApp/src/subpackages/mine/mineHire/InnerPage.vue b/apps/cMiniApp/src/subpackages/mine/mineHire/InnerPage.vue
index 15ab8a5..69b284a 100644
--- a/apps/cMiniApp/src/subpackages/mine/mineHire/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/mine/mineHire/InnerPage.vue
@@ -1,6 +1,6 @@
<template>
<ProTabs
- v-model="queryState.mineHireType"
+ v-model="queryState.status"
name="home-tab"
:showPaneContent="false"
class="home-tabs"
@@ -9,20 +9,38 @@
title-scroll
>
<ProTabPane :title="`鍏ㄩ儴`" :pane-key="0"></ProTabPane>
- <ProTabPane :title="`杩涜涓璥" :pane-key="10"></ProTabPane>
- <ProTabPane :title="`寰呴獙鏀禶" :pane-key="20"></ProTabPane>
- <ProTabPane :title="`宸插畬鎴恅" :pane-key="30"></ProTabPane>
+ <ProTabPane
+ :title="`杩涜涓璥"
+ :pane-key="GetPersonalHireTaskInfosQueryStatus.InProcess"
+ ></ProTabPane>
+ <ProTabPane
+ :title="`宸插畬鎴恅"
+ :pane-key="GetPersonalHireTaskInfosQueryStatus.Completed"
+ ></ProTabPane>
</ProTabs>
<InfiniteLoading
scrollViewClassName="common-infinite-scroll-list home-list"
v-bind="infiniteLoadingProps"
- :key="queryState.mineHireType"
+ :key="queryState.status"
>
<template #renderItem="{ item }">
- <TaskCard @click="goTaskDetail(item)">
+ <TaskCard
+ :name="item.name"
+ :begin-time="item.beginTime"
+ :end-time="item.endTime"
+ :billing-method="item.billingMethod"
+ :benefits="item.benefits"
+ :service-fee="item.serviceFee"
+ :settlement-cycle="item.settlementCycle"
+ :address-name="item.addressName"
+ @click="goTaskDetail(item)"
+ >
<template #actions>
- <div class="task-card-actions-text" :style="{ color: TaskStatusColor[10] }">
- {{ TaskStatusText[10] }}
+ <div
+ class="task-card-actions-text"
+ :style="{ color: GetPersonalHireTaskInfosQueryStatusColor[item.status] }"
+ >
+ {{ GetPersonalHireTaskInfosQueryStatusText[item.status] }}
</div>
</template>
</TaskCard>
@@ -32,11 +50,14 @@
<script setup lang="ts">
import { TaskCard, ProTabs, ProTabPane } from '@12333/components';
-import { useUserStore } from '@/stores/modules/user';
-import { TaskStatusText, TaskStatusColor, TaskStatus } from '@/constants';
import { useInfiniteLoading } from '@12333/hooks';
-import { OrderInputType } from '@12333/constants';
-import * as flexWorkerServices from '@12333/services/api/FlexWorker';
+import {
+ EnumPagedListOrder,
+ GetPersonalHireTaskInfosQueryStatus,
+ GetPersonalHireTaskInfosQueryStatusText,
+ GetPersonalHireTaskInfosQueryStatusColor,
+} from '@12333/constants';
+import * as taskServices from '@12333/services/apiV2/task';
import Taro from '@tarojs/taro';
defineOptions({
@@ -44,35 +65,31 @@
});
const queryState = reactive({
- mineHireType: TaskStatus.All,
+ status: 0 as any as GetPersonalHireTaskInfosQueryStatus,
});
-
-const userStore = useUserStore();
const { infiniteLoadingProps } = useInfiniteLoading(
({ pageParam }) => {
- let params: API.GetFlexTaskListInput = {
+ let params: API.GetPersonalHireTaskInfosQuery = {
pageModel: {
rows: 20,
page: pageParam,
- orderInput: [
- queryState.mineHireType === TaskStatus.All
- ? { property: 'creationTime', order: OrderInputType.Desc }
- : { property: 'lastShelfTime', order: OrderInputType.Desc },
- ],
+ orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
},
};
-
- return flexWorkerServices.getFlexTaskByArrange(params, {
+ if (Number(queryState.status)) {
+ params.status = queryState.status;
+ }
+ return taskServices.getPersonalHireTaskInfos(params, {
showLoading: false,
});
},
{
- queryKey: ['flexWorkerServices/getFlexTaskByArrange', queryState],
+ queryKey: ['taskServices/getPersonalHireTaskInfos', queryState],
}
);
-function goTaskDetail(item: API.GetFlexTaskListOutput) {
+function goTaskDetail(item: API.GetPersonalHireTaskInfosQueryResultItem) {
Taro.navigateTo({
url: `${RouterPath.taskDetail}?id=${item.id}`,
});
diff --git a/apps/cMiniApp/src/subpackages/mine/mineSign/InnerPage.vue b/apps/cMiniApp/src/subpackages/mine/mineSign/InnerPage.vue
index 659e8ea..0e86abd 100644
--- a/apps/cMiniApp/src/subpackages/mine/mineSign/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/mine/mineSign/InnerPage.vue
@@ -1,6 +1,6 @@
<template>
<ProTabs
- v-model="queryState.mineSignType"
+ v-model="queryState.status"
name="home-tab"
:showPaneContent="false"
class="home-tabs"
@@ -9,19 +9,38 @@
title-scroll
>
<ProTabPane :title="`鍏ㄩ儴`" :pane-key="0"></ProTabPane>
- <ProTabPane :title="`寰呯‘璁" :pane-key="10"></ProTabPane>
- <ProTabPane :title="`寰呯绾" :pane-key="20"></ProTabPane>
+ <ProTabPane
+ :title="`寰呯‘璁"
+ :pane-key="GetPersonalApplyTaskInfosQueryStatus.WaitHire"
+ ></ProTabPane>
+ <ProTabPane
+ :title="`寰呯绾"
+ :pane-key="GetPersonalApplyTaskInfosQueryStatus.WaitSignContract"
+ ></ProTabPane>
</ProTabs>
<InfiniteLoading
scrollViewClassName="common-infinite-scroll-list home-list"
v-bind="infiniteLoadingProps"
- :key="queryState.mineSignType"
+ :key="queryState.status"
>
<template #renderItem="{ item }">
- <TaskCard @click="goTaskDetail(item)">
+ <TaskCard
+ :name="item.name"
+ :begin-time="item.beginTime"
+ :end-time="item.endTime"
+ :billing-method="item.billingMethod"
+ :benefits="item.benefits"
+ :service-fee="item.serviceFee"
+ :settlement-cycle="item.settlementCycle"
+ :address-name="item.addressName"
+ @click="goTaskDetail(item)"
+ >
<template #actions>
- <div class="task-card-actions-text" :style="{ color: TaskStatusColor[10] }">
- {{ TaskStatusText[10] }}
+ <div
+ class="task-card-actions-text"
+ :style="{ color: GetPersonalApplyTaskInfosQueryStatusColor[item.status] }"
+ >
+ {{ GetPersonalApplyTaskInfosQueryStatusText[item.status] }}
</div>
</template>
</TaskCard>
@@ -32,10 +51,14 @@
<script setup lang="ts">
import { TaskCard, ProTabs, ProTabPane } from '@12333/components';
import { useUserStore } from '@/stores/modules/user';
-import { TaskStatusText, TaskStatusColor, TaskStatus } from '@/constants';
import { useInfiniteLoading } from '@12333/hooks';
-import { OrderInputType } from '@12333/constants';
-import * as flexWorkerServices from '@12333/services/api/FlexWorker';
+import {
+ EnumPagedListOrder,
+ GetPersonalApplyTaskInfosQueryStatus,
+ GetPersonalApplyTaskInfosQueryStatusText,
+ GetPersonalApplyTaskInfosQueryStatusColor,
+} from '@12333/constants';
+import * as taskServices from '@12333/services/apiV2/task';
import Taro from '@tarojs/taro';
defineOptions({
@@ -43,35 +66,33 @@
});
const queryState = reactive({
- mineSignType: TaskStatus.All,
+ status: 0 as any as GetPersonalApplyTaskInfosQueryStatus,
});
const userStore = useUserStore();
const { infiniteLoadingProps } = useInfiniteLoading(
({ pageParam }) => {
- let params: API.GetFlexTaskListInput = {
+ let params: API.GetPersonalApplyTaskInfosQuery = {
pageModel: {
rows: 20,
page: pageParam,
- orderInput: [
- queryState.mineSignType === TaskStatus.All
- ? { property: 'creationTime', order: OrderInputType.Desc }
- : { property: 'lastShelfTime', order: OrderInputType.Desc },
- ],
+ orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
},
};
-
- return flexWorkerServices.getFlexTaskByArrange(params, {
+ if (Number(queryState.status)) {
+ params.status = queryState.status;
+ }
+ return taskServices.getPersonalApplyTaskInfos(params, {
showLoading: false,
});
},
{
- queryKey: ['flexWorkerServices/getFlexTaskByArrange', queryState],
+ queryKey: ['taskServices/getPersonalApplyTaskInfos', queryState],
}
);
-function goTaskDetail(item: API.GetFlexTaskListOutput) {
+function goTaskDetail(item: API.GetPersonalApplyTaskInfosQueryResultItem) {
Taro.navigateTo({
url: `${RouterPath.taskDetail}?id=${item.id}`,
});
diff --git a/packages/components/src/Card/FlexJobCard.vue b/packages/components/src/Card/FlexJobCard.vue
index a6298e5..36fca70 100644
--- a/packages/components/src/Card/FlexJobCard.vue
+++ b/packages/components/src/Card/FlexJobCard.vue
@@ -3,19 +3,21 @@
<FlexJobTopView
:name="name"
:age="age"
+ :avatar="avatar"
:gender="gender"
- :userIsReal="userIsReal"
- :arrangeCount="arrangeCount"
- :educationalLevel="educationalLevel"
+ :isReal="isReal"
+ :personalIdentityContent="personalIdentityContent"
+ :educationalBackgroundContent="educationalBackgroundContent"
+ :taskCount="taskCount"
/>
<div class="flexJob-card-done-list">
{{ workExperience }}
</div>
<div class="flexJob-card-done-detail" v-if="showDoneDetail">
<div class="flexJob-card-done-detail-item">
- {{ '鍦ㄣ�屽畞娉㈤浄杩.閰掑簵銆嶏紝鍋氳繃瀹㈡埧鏈嶅姟鍛樺湪銆屽畞娉㈤浄杩.閰掑簵銆嶏紝鍋氳繃瀹㈡埧鏈嶅姟鍛�' }}
+ {{ workSeniority }}
</div>
- <div class="flexJob-card-done-detail-item">{{ '鍦ㄣ�屽畞娉㈤浄杩.閰掑簵銆嶏紝鍋氳繃瀹㈡埧鏈嶅姟鍛�' }}</div>
+ <!-- <div class="flexJob-card-done-detail-item">{{ '鍦ㄣ�屽畞娉㈤浄杩.閰掑簵銆嶏紝鍋氳繃瀹㈡埧鏈嶅姟鍛�' }}</div> -->
</div>
<div class="flexJob-card-footer">
<div class="flexJob-card-footer-left-wrapper">
@@ -40,7 +42,7 @@
<script setup lang="ts">
import { CommonTaskCardProps } from './card';
import FlexJobTopView from './FlexJobTopView.vue';
-import { EnumUserGender } from '@12333/constants';
+import { EnumUserGender, Gender } from '@12333/constants';
defineOptions({
name: 'FlexJobCard',
@@ -52,12 +54,15 @@
showDoneDetail?: boolean;
name?: string;
+ avatar?: string;
gender?: EnumUserGender;
age?: number;
- userIsReal?: boolean;
- educationalLevel?: string;
+ isReal?: boolean;
+ personalIdentityContent?: string;
+ educationalBackgroundContent?: string;
+ taskCount?: number;
workExperience?: string;
- arrangeCount?: number;
+ workSeniority?: string;
};
const props = withDefaults(defineProps<Props>(), {
diff --git a/packages/components/src/Card/FlexJobTopView.vue b/packages/components/src/Card/FlexJobTopView.vue
index 4461f81..754b80d 100644
--- a/packages/components/src/Card/FlexJobTopView.vue
+++ b/packages/components/src/Card/FlexJobTopView.vue
@@ -1,24 +1,28 @@
<template>
<div :class="['flexJob-card-top-wrapper', size]">
- <Avatar :src="avatarUrl" :size="size === 'small' ? 50 : 60" class="flexJob-card-top-avatar" />
+ <Avatar :src="avatar" :size="size === 'small' ? 50 : 60" class="flexJob-card-top-avatar" />
<div class="flexJob-card-top-info">
<div class="flexJob-card-top-info-item">
<div class="flexJob-card-top-info-name">{{ name }}</div>
<div class="flexJob-card-top-info-gender">
<img
- v-if="genderType === EnumUserGender.Male"
+ v-if="gender === EnumUserGender.Male"
:src="IconMale"
class="flexJob-card-top-info-gender-icon"
/>
<img v-else :src="IconFemale" class="flexJob-card-top-info-gender-icon" />
</div>
- <div class="flexJob-card-top-info-auth" :class="{ 'is-real-name': isRealName }">
- {{ isRealName ? '宸插疄鍚�' : '鏈疄鍚�' }}
+ <div class="flexJob-card-top-info-auth" :class="{ 'is-real-name': isReal }">
+ {{ isReal ? '宸插疄鍚�' : '鏈疄鍚�' }}
</div>
</div>
<slot name="detail">
<div class="flexJob-card-top-info-detail">
- {{ `${age}宀� | ${educationalLevel} | ${educationalLevel} | 涓婂矖${arrangeCount}娆 }}
+ {{
+ `${age ? '' : `${age}宀亅`}${personalIdentityContent ?? ''} | ${
+ educationalBackgroundContent ?? ''
+ } | 涓婂矖${taskCount ?? 0}娆
+ }}
</div>
</slot>
</div>
@@ -38,18 +42,19 @@
type Props = {
size?: 'normal' | 'small';
- avatarUrl?: string;
+ avatar?: string;
name?: string;
- genderType?: EnumUserGender;
+ gender?: EnumUserGender;
age?: number;
- educationalLevel?: string;
- arrangeCount?: number;
- isRealName?: boolean;
+ isReal?: boolean;
+ personalIdentityContent?: string;
+ educationalBackgroundContent?: string;
+ taskCount?: number;
};
const props = withDefaults(defineProps<Props>(), {
size: 'normal',
- avatarUrl: AvatarImage,
+ avatar: AvatarImage,
});
</script>
diff --git a/packages/constants/apiEnum.ts b/packages/constants/apiEnum.ts
index aec9be0..a2b8be0 100644
--- a/packages/constants/apiEnum.ts
+++ b/packages/constants/apiEnum.ts
@@ -91,7 +91,7 @@
Dictionary = 0,
/**浠诲姟 */
Task = 1,
- /**浠诲姟闆囦剑 */
+ /**浠诲姟浜哄憳 */
TaskUser = 2,
/**鐢ㄦ埛璁よ瘉 */
Auth = 3,
@@ -195,6 +195,14 @@
Complete = 20,
}
+/** 浠诲姟鐢ㄦ埛瀹夋帓鐘舵�� */
+export enum EnumTaskUserArrangeStatus {
+ /**鏈畨鎺� */
+ Wait = 10,
+ /**宸插畨鎺� */
+ Complete = 20,
+}
+
/** 浠诲姟褰曠敤鐘舵�� */
export enum EnumTaskUserHireStatus {
/**寰呭綍鐢� */
@@ -250,3 +258,19 @@
/**杩愯惀 */
Operation = 100,
}
+
+/** 鎴戠殑鎶ュ悕鍒嗛〉鍒楄〃-鐘舵�� */
+export enum GetPersonalApplyTaskInfosQueryStatus {
+ /**寰呯‘璁� */
+ WaitHire = 10,
+ /**寰呯绾� */
+ WaitSignContract = 20,
+}
+
+/** 鎴戠殑宸插綍鐢ㄥ垎椤靛垪琛�-鐘舵�� */
+export enum GetPersonalHireTaskInfosQueryStatus {
+ /**杩涜涓� */
+ InProcess = 10,
+ /**宸插畬鎴� */
+ Completed = 20,
+}
diff --git a/packages/constants/task.ts b/packages/constants/task.ts
index 6e1fd23..245bba6 100644
--- a/packages/constants/task.ts
+++ b/packages/constants/task.ts
@@ -6,6 +6,9 @@
EnumTaskCheckReceiveStatus,
EnumPersonalFreeTime,
EnumPersonalJobSeekingStatus,
+ EnumTaskUserHireStatus,
+ GetPersonalApplyTaskInfosQueryStatus,
+ GetPersonalHireTaskInfosQueryStatus,
} from './apiEnum';
export const EnumBillingMethodText = {
@@ -62,3 +65,29 @@
[EnumPersonalJobSeekingStatus.Whatever]: '闅忎究鐪嬬湅',
[EnumPersonalJobSeekingStatus.Not]: '鏆傛椂涓嶆壘浠诲姟',
};
+
+export const EnumTaskUserHireStatusText = {
+ [EnumTaskUserHireStatus.Wait]: '寰呭綍鐢�',
+ [EnumTaskUserHireStatus.Pass]: '宸插綍鐢�',
+ [EnumTaskUserHireStatus.Refuse]: '宸茶阿缁�',
+};
+
+export const GetPersonalApplyTaskInfosQueryStatusText = {
+ [GetPersonalApplyTaskInfosQueryStatus.WaitHire]: '寰呯‘璁�',
+ [GetPersonalApplyTaskInfosQueryStatus.WaitSignContract]: '寰呯绾�',
+};
+
+export const GetPersonalApplyTaskInfosQueryStatusColor = {
+ [GetPersonalApplyTaskInfosQueryStatus.WaitHire]: '#FF7D00',
+ [GetPersonalApplyTaskInfosQueryStatus.WaitSignContract]: '#3A71FF',
+};
+
+export const GetPersonalHireTaskInfosQueryStatusText = {
+ [GetPersonalHireTaskInfosQueryStatus.InProcess]: '杩涜涓�',
+ [GetPersonalHireTaskInfosQueryStatus.Completed]: '宸插畬鎴�',
+};
+
+export const GetPersonalHireTaskInfosQueryStatusColor = {
+ [GetPersonalHireTaskInfosQueryStatus.InProcess]: '#2A9E1B',
+ [GetPersonalHireTaskInfosQueryStatus.Completed]: '#9FA4AC',
+};
diff --git a/packages/hooks/index.ts b/packages/hooks/index.ts
index 8459cc4..517d13d 100644
--- a/packages/hooks/index.ts
+++ b/packages/hooks/index.ts
@@ -6,3 +6,4 @@
export * from './identify';
export * from './enterprise';
export * from './task';
+export * from './taskUser';
diff --git a/packages/hooks/taskUser.ts b/packages/hooks/taskUser.ts
new file mode 100644
index 0000000..d028288
--- /dev/null
+++ b/packages/hooks/taskUser.ts
@@ -0,0 +1,39 @@
+import { useInfiniteLoading } from '@12333/hooks';
+import { EnumPagedListOrder } from '@12333/constants';
+import _ from 'lodash';
+import { MaybeRef, unref } from 'vue';
+import * as taskUserServices from '@12333/services/apiV2/taskUser';
+
+type UseTaskListOptions = {
+ id?: MaybeRef<string>;
+};
+
+export function useTaskUserList(options: UseTaskListOptions = {}) {
+ const { id } = options;
+
+ const { infiniteLoadingProps, invalidateQueries } = useInfiniteLoading(
+ ({ pageParam }) => {
+ let params: API.GetTaskUsersQuery = {
+ pageModel: {
+ rows: 20,
+ page: pageParam,
+ orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
+ },
+ id: unref(id),
+ };
+
+ return taskUserServices.getTaskUsers(params, {
+ showLoading: false,
+ });
+ },
+ {
+ queryKey: ['taskUserServices/getTaskUsers', id],
+ enabled: !!unref(id),
+ }
+ );
+
+ return {
+ infiniteLoadingProps,
+ invalidateQueries,
+ };
+}
diff --git a/packages/services/apiV2/task.ts b/packages/services/apiV2/task.ts
index 5dd6235..b6c19fa 100644
--- a/packages/services/apiV2/task.ts
+++ b/packages/services/apiV2/task.ts
@@ -14,6 +14,60 @@
});
}
+/** 鎴戠殑鎶ュ悕鍒嗛〉鍒楄〃 POST /api/flexjob/task/getPersonalApplyTaskInfos */
+export async function getPersonalApplyTaskInfos(
+ body: API.GetPersonalApplyTaskInfosQuery,
+ options?: API.RequestConfig
+) {
+ return request<API.GetPersonalApplyTaskInfosQueryResult>(
+ '/api/flexjob/task/getPersonalApplyTaskInfos',
+ {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ }
+ );
+}
+
+/** 鎴戠殑宸插彇娑堝垎椤靛垪琛� POST /api/flexjob/task/getPersonalCancelTaskInfos */
+export async function getPersonalCancelTaskInfos(
+ body: API.GetPersonalCancelTaskInfosQuery,
+ options?: API.RequestConfig
+) {
+ return request<API.GetPersonalCancelTaskInfosQueryResult>(
+ '/api/flexjob/task/getPersonalCancelTaskInfos',
+ {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ }
+ );
+}
+
+/** 鎴戠殑宸插綍鐢ㄥ垎椤靛垪琛� POST /api/flexjob/task/getPersonalHireTaskInfos */
+export async function getPersonalHireTaskInfos(
+ body: API.GetPersonalHireTaskInfosQuery,
+ options?: API.RequestConfig
+) {
+ return request<API.GetPersonalHireTaskInfosQueryResult>(
+ '/api/flexjob/task/getPersonalHireTaskInfos',
+ {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ }
+ );
+}
+
/** 鏌ヨ浠诲姟璇︽儏 GET /api/flexjob/task/getTaskInfo */
export async function getTaskInfo(
// 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
diff --git a/packages/services/apiV2/taskUser.ts b/packages/services/apiV2/taskUser.ts
index 0b1d1b5..af03cc7 100644
--- a/packages/services/apiV2/taskUser.ts
+++ b/packages/services/apiV2/taskUser.ts
@@ -26,7 +26,22 @@
});
}
-/** 鏌ヨ搴旇仒鎶ュ悕鍒嗛〉鍒楄〃淇℃伅 POST /api/flexjob/taskUser/getTaskUsers */
+/** B绔煡璇汉鍛樺畨鎺掑垎椤靛垪琛ㄤ俊鎭� POST /api/flexjob/taskUser/getArrangeTaskUsers */
+export async function getArrangeTaskUsers(
+ body: API.GetArrangeTaskUsersQuery,
+ options?: API.RequestConfig
+) {
+ return request<API.GetArrangeTaskUsersQueryResult>('/api/flexjob/taskUser/getArrangeTaskUsers', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
+
+/** B绔煡璇㈠簲鑱樻姤鍚嶅垎椤靛垪琛ㄤ俊鎭� POST /api/flexjob/taskUser/getTaskUsers */
export async function getTaskUsers(body: API.GetTaskUsersQuery, options?: API.RequestConfig) {
return request<API.GetTaskUsersQueryResult>('/api/flexjob/taskUser/getTaskUsers', {
method: 'POST',
@@ -38,6 +53,21 @@
});
}
+/** 浠诲姟瀹夋帓 PUT /api/flexjob/taskUser/setTaskUserArrange */
+export async function setTaskUserArrange(
+ body: API.SetTaskUserArrangeCommand,
+ options?: API.RequestConfig
+) {
+ return request<string>('/api/flexjob/taskUser/setTaskUserArrange', {
+ method: 'PUT',
+ headers: {
+ 'Content-Type': 'application/json-patch+json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
+
/** 浠诲姟褰曠敤 PUT /api/flexjob/taskUser/setTaskUserHire */
export async function setTaskUserHire(
body: API.SetTaskUserHireCommand,
diff --git a/packages/services/apiV2/typings.d.ts b/packages/services/apiV2/typings.d.ts
index fe6ab58..7051bdc 100644
--- a/packages/services/apiV2/typings.d.ts
+++ b/packages/services/apiV2/typings.d.ts
@@ -283,7 +283,7 @@
Dictionary = 0,
/**浠诲姟 */
Task = 1,
- /**浠诲姟闆囦剑 */
+ /**浠诲姟浜哄憳 */
TaskUser = 2,
/**鐢ㄦ埛璁よ瘉 */
Auth = 3,
@@ -378,6 +378,13 @@
Complete = 20,
}
+ enum EnumTaskUserArrangeStatus {
+ /**鏈畨鎺� */
+ Wait = 10,
+ /**宸插畨鎺� */
+ Complete = 20,
+ }
+
enum EnumTaskUserHireStatus {
/**寰呭綍鐢� */
Wait = 10,
@@ -455,6 +462,24 @@
/** 閿欒鐮� */
errorCode?: string;
data?: GetAliyunOSSAcsQueryResult;
+ /** 鎵ц鎴愬姛 */
+ success?: boolean;
+ /** 閿欒淇℃伅 */
+ msg?: any;
+ /** 闄勫姞鏁版嵁 */
+ extras?: any;
+ /** 鏃堕棿鎴� */
+ timestamp?: number;
+ }
+
+ interface FriendlyResultGetArrangeTaskUsersQueryResult {
+ /** 璺熻釜Id */
+ traceId?: string;
+ /** 鐘舵�佺爜 */
+ code?: number;
+ /** 閿欒鐮� */
+ errorCode?: string;
+ data?: GetArrangeTaskUsersQueryResult;
/** 鎵ц鎴愬姛 */
success?: boolean;
/** 閿欒淇℃伅 */
@@ -545,6 +570,60 @@
/** 閿欒鐮� */
errorCode?: string;
data?: GetMenuQueryResult;
+ /** 鎵ц鎴愬姛 */
+ success?: boolean;
+ /** 閿欒淇℃伅 */
+ msg?: any;
+ /** 闄勫姞鏁版嵁 */
+ extras?: any;
+ /** 鏃堕棿鎴� */
+ timestamp?: number;
+ }
+
+ interface FriendlyResultGetPersonalApplyTaskInfosQueryResult {
+ /** 璺熻釜Id */
+ traceId?: string;
+ /** 鐘舵�佺爜 */
+ code?: number;
+ /** 閿欒鐮� */
+ errorCode?: string;
+ data?: GetPersonalApplyTaskInfosQueryResult;
+ /** 鎵ц鎴愬姛 */
+ success?: boolean;
+ /** 閿欒淇℃伅 */
+ msg?: any;
+ /** 闄勫姞鏁版嵁 */
+ extras?: any;
+ /** 鏃堕棿鎴� */
+ timestamp?: number;
+ }
+
+ interface FriendlyResultGetPersonalCancelTaskInfosQueryResult {
+ /** 璺熻釜Id */
+ traceId?: string;
+ /** 鐘舵�佺爜 */
+ code?: number;
+ /** 閿欒鐮� */
+ errorCode?: string;
+ data?: GetPersonalCancelTaskInfosQueryResult;
+ /** 鎵ц鎴愬姛 */
+ success?: boolean;
+ /** 閿欒淇℃伅 */
+ msg?: any;
+ /** 闄勫姞鏁版嵁 */
+ extras?: any;
+ /** 鏃堕棿鎴� */
+ timestamp?: number;
+ }
+
+ interface FriendlyResultGetPersonalHireTaskInfosQueryResult {
+ /** 璺熻釜Id */
+ traceId?: string;
+ /** 鐘舵�佺爜 */
+ code?: number;
+ /** 閿欒鐮� */
+ errorCode?: string;
+ data?: GetPersonalHireTaskInfosQueryResult;
/** 鎵ц鎴愬姛 */
success?: boolean;
/** 閿欒淇℃伅 */
@@ -1117,6 +1196,55 @@
quickQuery?: string;
}
+ interface GetArrangeTaskUsersQuery {
+ /** 浠诲姟Id */
+ id?: string;
+ /** 鍏抽敭瀛楋紙濮撳悕/韬唤璇�/鐢佃瘽锛� */
+ keywords?: string;
+ arrangeStatus?: EnumTaskUserArrangeStatus;
+ pageModel?: PagedListQueryPageModel;
+ }
+
+ interface GetArrangeTaskUsersQueryResult {
+ pageModel?: PagedListQueryResultPageModel;
+ /** 鏁版嵁 */
+ data?: GetArrangeTaskUsersQueryResultItem[];
+ }
+
+ interface GetArrangeTaskUsersQueryResultItem {
+ /** 浠诲姟浜哄憳Id */
+ id?: string;
+ /** 澶村儚 */
+ avatar?: string;
+ /** 濮撳悕 */
+ name?: string;
+ /** 韬唤璇佸彿 */
+ identity?: string;
+ /** 鎵嬫満鍙� */
+ contactPhoneNumber?: string;
+ gender?: EnumUserGender;
+ /** 骞撮緞 */
+ age?: number;
+ /** 鏄惁瀹炲悕 */
+ isReal?: boolean;
+ realMethod?: EnumUserRealMethod;
+ /** 韬唤缂栧彿 */
+ personalIdentityCode?: string;
+ /** 韬唤 */
+ personalIdentityContent?: string;
+ /** 瀛﹀巻缂栧彿 */
+ educationalBackgroundCode?: string;
+ /** 瀛﹀巻 */
+ educationalBackgroundContent?: string;
+ /** 涓婂矖娆℃暟 */
+ taskCount?: number;
+ /** 宸ヤ綔璧勫巻 */
+ workSeniority?: string;
+ /** 宸ヤ綔缁忛獙 */
+ workExperience?: string;
+ arrangeStatus?: EnumTaskUserArrangeStatus;
+ }
+
type GetCurrentLogierMenusQuery = Record<string, any>;
interface GetDictionaryCategoriesQuery {
@@ -1514,6 +1642,111 @@
name?: string;
}
+ interface GetPersonalApplyTaskInfosQuery {
+ status?: GetPersonalApplyTaskInfosQueryStatus;
+ pageModel?: PagedListQueryPageModel;
+ }
+
+ interface GetPersonalApplyTaskInfosQueryResult {
+ pageModel?: PagedListQueryResultPageModel;
+ /** 鏁版嵁 */
+ data?: GetPersonalApplyTaskInfosQueryResultItem[];
+ }
+
+ interface GetPersonalApplyTaskInfosQueryResultItem {
+ /** 浠诲姟Id */
+ id?: string;
+ /** 浠诲姟鍚嶇О */
+ name?: string;
+ /** 浠诲姟寮�濮嬫椂闂� */
+ beginTime?: string;
+ /** 浠诲姟缁撴潫鏃堕棿 */
+ endTime?: string;
+ billingMethod?: EnumBillingMethod;
+ /** 鏈嶅姟璐� */
+ serviceFee?: number;
+ settlementCycle?: EnumSettlementCycle;
+ /** 绂忓埄 */
+ benefits?: GetTaskInfoQueryResultBenefit[];
+ /** 浠诲姟鍦扮偣鍚嶇О */
+ addressName?: string;
+ status?: GetPersonalApplyTaskInfosQueryStatus;
+ }
+
+ enum GetPersonalApplyTaskInfosQueryStatus {
+ /**寰呯‘璁� */
+ WaitHire = 10,
+ /**寰呯绾� */
+ WaitSignContract = 20,
+ }
+
+ interface GetPersonalCancelTaskInfosQuery {
+ pageModel?: PagedListQueryPageModel;
+ }
+
+ interface GetPersonalCancelTaskInfosQueryResult {
+ pageModel?: PagedListQueryResultPageModel;
+ /** 鏁版嵁 */
+ data?: GetPersonalCancelTaskInfosQueryResultItem[];
+ }
+
+ interface GetPersonalCancelTaskInfosQueryResultItem {
+ /** 浠诲姟Id */
+ id?: string;
+ /** 浠诲姟鍚嶇О */
+ name?: string;
+ /** 浠诲姟寮�濮嬫椂闂� */
+ beginTime?: string;
+ /** 浠诲姟缁撴潫鏃堕棿 */
+ endTime?: string;
+ billingMethod?: EnumBillingMethod;
+ /** 鏈嶅姟璐� */
+ serviceFee?: number;
+ settlementCycle?: EnumSettlementCycle;
+ /** 绂忓埄 */
+ benefits?: GetTaskInfoQueryResultBenefit[];
+ /** 浠诲姟鍦扮偣鍚嶇О */
+ addressName?: string;
+ }
+
+ interface GetPersonalHireTaskInfosQuery {
+ status?: GetPersonalHireTaskInfosQueryStatus;
+ pageModel?: PagedListQueryPageModel;
+ }
+
+ interface GetPersonalHireTaskInfosQueryResult {
+ pageModel?: PagedListQueryResultPageModel;
+ /** 鏁版嵁 */
+ data?: GetPersonalHireTaskInfosQueryResultItem[];
+ }
+
+ interface GetPersonalHireTaskInfosQueryResultItem {
+ /** 浠诲姟Id */
+ id?: string;
+ /** 浠诲姟鍚嶇О */
+ name?: string;
+ /** 浠诲姟寮�濮嬫椂闂� */
+ beginTime?: string;
+ /** 浠诲姟缁撴潫鏃堕棿 */
+ endTime?: string;
+ billingMethod?: EnumBillingMethod;
+ /** 鏈嶅姟璐� */
+ serviceFee?: number;
+ settlementCycle?: EnumSettlementCycle;
+ /** 绂忓埄 */
+ benefits?: GetTaskInfoQueryResultBenefit[];
+ /** 浠诲姟鍦扮偣鍚嶇О */
+ addressName?: string;
+ status?: GetPersonalHireTaskInfosQueryStatus;
+ }
+
+ enum GetPersonalHireTaskInfosQueryStatus {
+ /**杩涜涓� */
+ InProcess = 10,
+ /**宸插畬鎴� */
+ Completed = 20,
+ }
+
type GetPersonalLoginInfoQuery = Record<string, any>;
interface GetPersonalLoginInfoQueryResult {
@@ -1717,8 +1950,6 @@
releaseStatus?: EnumTaskReleaseStatus;
recommendStatus?: EnumTaskRecommendStatus;
checkReceiveStatus?: EnumTaskCheckReceiveStatus;
- /** 褰曠敤鐘舵�� */
- hireStatus?: EnumTaskUserHireStatus[];
pageModel?: PagedListQueryPageModel;
}
@@ -1774,7 +2005,6 @@
recommendStatus?: EnumTaskRecommendStatus;
/** 鍒涘缓鏃堕棿 */
createdTime?: string;
- hireStatus?: EnumTaskUserHireStatus;
}
interface GetTaskInfosQueryResultObjectData {
@@ -1801,7 +2031,7 @@
}
interface GetTaskUsersQueryResultItem {
- /** 浠诲姟闆囦剑Id */
+ /** 浠诲姟浜哄憳Id */
id?: string;
/** 澶村儚 */
avatar?: string;
@@ -2585,8 +2815,14 @@
releaseStatus?: EnumTaskReleaseStatus;
}
+ interface SetTaskUserArrangeCommand {
+ /** 浠诲姟浜哄憳Id */
+ id?: string;
+ arrangeStatus?: EnumTaskUserArrangeStatus;
+ }
+
interface SetTaskUserHireCommand {
- /** 浠诲姟闆囦剑Id */
+ /** 浠诲姟浜哄憳Id */
id?: string;
hireStatus?: EnumTaskUserHireStatus;
}
--
Gitblit v1.9.1