| | |
| | | "query": "", |
| | | "launchMode": "default", |
| | | "scene": null |
| | | }, |
| | | { |
| | | "name": "", |
| | | "pathName": "subpackages/jobApplicationManage/jobApplicationDetail/jobApplicationDetail", |
| | | "query": "id=04c75425-e783-4dbf-0f16-08ddd626b756", |
| | | "launchMode": "default", |
| | | "scene": null |
| | | } |
| | | ] |
| | | } |
| | |
| | | // const props = withDefaults(defineProps<Props>(), {}); |
| | | const router = Taro.useRouter(); |
| | | |
| | | const taskId = router.params?.taskId; |
| | | const id = router.params?.id; |
| | | |
| | | const { |
| | | isLoading, |
| | |
| | | data: detail, |
| | | refetch, |
| | | } = useQuery({ |
| | | queryKey: ['taskServices/getTaskInfo', taskId], |
| | | queryKey: ['taskServices/getTaskInfo', id], |
| | | queryFn: async () => { |
| | | return await taskServices.getTaskInfo( |
| | | { id: taskId }, |
| | | { id: id }, |
| | | { |
| | | showLoading: false, |
| | | } |
| | |
| | | <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> |
| | |
| | | </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'; |
| | | |
| | |
| | | // 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({ |
| | |
| | | |
| | | 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> |
| | |
| | | > |
| | | <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> |
| | |
| | | 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, |
| | |
| | | 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); |
| | |
| | | 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> |
| | |
| | | |
| | | <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> |
| | |
| | | <template> |
| | | <ProTabs |
| | | v-model="queryState.mineHireType" |
| | | v-model="queryState.status" |
| | | name="home-tab" |
| | | :showPaneContent="false" |
| | | class="home-tabs" |
| | |
| | | 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> |
| | |
| | | |
| | | <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({ |
| | |
| | | }); |
| | | |
| | | 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}`, |
| | | }); |
| | |
| | | <template> |
| | | <ProTabs |
| | | v-model="queryState.mineSignType" |
| | | v-model="queryState.status" |
| | | name="home-tab" |
| | | :showPaneContent="false" |
| | | class="home-tabs" |
| | |
| | | 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> |
| | |
| | | <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({ |
| | |
| | | }); |
| | | |
| | | 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}`, |
| | | }); |
| | |
| | | <FlexJobTopView |
| | | :name="name" |
| | | :age="age" |
| | | :genderType="genderType" |
| | | :isRealName="isRealName" |
| | | :arrangeCount="arrangeCount" |
| | | :educationalLevel="educationalLevel" |
| | | :avatar="avatar" |
| | | :gender="gender" |
| | | :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"> |
| | |
| | | <script setup lang="ts"> |
| | | import { CommonTaskCardProps } from './card'; |
| | | import FlexJobTopView from './FlexJobTopView.vue'; |
| | | import { Gender } from '@12333/constants'; |
| | | import { EnumUserGender, Gender } from '@12333/constants'; |
| | | |
| | | defineOptions({ |
| | | name: 'FlexJobCard', |
| | |
| | | showDoneDetail?: boolean; |
| | | |
| | | name?: string; |
| | | genderType?: Gender; |
| | | avatar?: string; |
| | | gender?: EnumUserGender; |
| | | age?: number; |
| | | isRealName?: boolean; |
| | | educationalLevel?: string; |
| | | isReal?: boolean; |
| | | personalIdentityContent?: string; |
| | | educationalBackgroundContent?: string; |
| | | taskCount?: number; |
| | | workExperience?: string; |
| | | arrangeCount?: number; |
| | | workSeniority?: string; |
| | | }; |
| | | |
| | | const props = withDefaults(defineProps<Props>(), { |
| | |
| | | <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> |
| | |
| | | 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> |
| | | |
| | |
| | | Dictionary = 0, |
| | | /**任务 */ |
| | | Task = 1, |
| | | /**任务雇佣 */ |
| | | /**任务人员 */ |
| | | TaskUser = 2, |
| | | /**用户认证 */ |
| | | Auth = 3, |
| | |
| | | Complete = 20, |
| | | } |
| | | |
| | | /** 任务用户安排状态 */ |
| | | export enum EnumTaskUserArrangeStatus { |
| | | /**未安排 */ |
| | | Wait = 10, |
| | | /**已安排 */ |
| | | Complete = 20, |
| | | } |
| | | |
| | | /** 任务录用状态 */ |
| | | export enum EnumTaskUserHireStatus { |
| | | /**待录用 */ |
| | |
| | | /**运营 */ |
| | | Operation = 100, |
| | | } |
| | | |
| | | /** 我的报名分页列表-状态 */ |
| | | export enum GetPersonalApplyTaskInfosQueryStatus { |
| | | /**待确认 */ |
| | | WaitHire = 10, |
| | | /**待签约 */ |
| | | WaitSignContract = 20, |
| | | } |
| | | |
| | | /** 我的已录用分页列表-状态 */ |
| | | export enum GetPersonalHireTaskInfosQueryStatus { |
| | | /**进行中 */ |
| | | InProcess = 10, |
| | | /**已完成 */ |
| | | Completed = 20, |
| | | } |
| | |
| | | EnumTaskCheckReceiveStatus, |
| | | EnumPersonalFreeTime, |
| | | EnumPersonalJobSeekingStatus, |
| | | EnumTaskUserHireStatus, |
| | | GetPersonalApplyTaskInfosQueryStatus, |
| | | GetPersonalHireTaskInfosQueryStatus, |
| | | } from './apiEnum'; |
| | | |
| | | export const EnumBillingMethodText = { |
| | |
| | | [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', |
| | | }; |
| | |
| | | export * from './identify'; |
| | | export * from './enterprise'; |
| | | export * from './task'; |
| | | export * from './taskUser'; |
New file |
| | |
| | | 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, |
| | | }; |
| | | } |
| | |
| | | }); |
| | | } |
| | | |
| | | /** 我的报名分页列表 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( |
| | | // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) |
| | |
| | | }); |
| | | } |
| | | |
| | | /** 查询应聘报名分页列表信息 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', |
| | |
| | | }); |
| | | } |
| | | |
| | | /** 任务安排 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, |
| | |
| | | Dictionary = 0, |
| | | /**任务 */ |
| | | Task = 1, |
| | | /**任务雇佣 */ |
| | | /**任务人员 */ |
| | | TaskUser = 2, |
| | | /**用户认证 */ |
| | | Auth = 3, |
| | |
| | | Complete = 20, |
| | | } |
| | | |
| | | enum EnumTaskUserArrangeStatus { |
| | | /**未安排 */ |
| | | Wait = 10, |
| | | /**已安排 */ |
| | | Complete = 20, |
| | | } |
| | | |
| | | enum EnumTaskUserHireStatus { |
| | | /**待录用 */ |
| | | Wait = 10, |
| | |
| | | /** 错误码 */ |
| | | 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; |
| | | /** 错误信息 */ |
| | |
| | | /** 错误码 */ |
| | | 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; |
| | | /** 错误信息 */ |
| | |
| | | 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 { |
| | |
| | | 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 { |
| | |
| | | releaseStatus?: EnumTaskReleaseStatus; |
| | | recommendStatus?: EnumTaskRecommendStatus; |
| | | checkReceiveStatus?: EnumTaskCheckReceiveStatus; |
| | | /** 录用状态 */ |
| | | hireStatus?: EnumTaskUserHireStatus[]; |
| | | pageModel?: PagedListQueryPageModel; |
| | | } |
| | | |
| | |
| | | recommendStatus?: EnumTaskRecommendStatus; |
| | | /** 创建时间 */ |
| | | createdTime?: string; |
| | | hireStatus?: EnumTaskUserHireStatus; |
| | | } |
| | | |
| | | interface GetTaskInfosQueryResultObjectData { |
| | |
| | | } |
| | | |
| | | interface GetTaskUsersQueryResultItem { |
| | | /** 任务雇佣Id */ |
| | | /** 任务人员Id */ |
| | | id?: string; |
| | | /** 头像 */ |
| | | avatar?: string; |
| | |
| | | releaseStatus?: EnumTaskReleaseStatus; |
| | | } |
| | | |
| | | interface SetTaskUserArrangeCommand { |
| | | /** 任务人员Id */ |
| | | id?: string; |
| | | arrangeStatus?: EnumTaskUserArrangeStatus; |
| | | } |
| | | |
| | | interface SetTaskUserHireCommand { |
| | | /** 任务雇佣Id */ |
| | | /** 任务人员Id */ |
| | | id?: string; |
| | | hireStatus?: EnumTaskUserHireStatus; |
| | | } |