|  |  | 
 |  |  | <template> | 
 |  |  |   <LoadingLayout :loading="isLoading" :error="isError" :loadError="refetch"> | 
 |  |  |     <JobDetailContent :isCollapse="true"> | 
 |  |  |     <JobDetailContent | 
 |  |  |       :avatar="userResumeInfo.avatar" | 
 |  |  |       :name="userResumeInfo.name" | 
 |  |  |       :age="userResumeInfo.age" | 
 |  |  |       :isReal="userResumeInfo.isReal" | 
 |  |  |       :gender="userResumeInfo.gender" | 
 |  |  |       :personalIdentityContent="userResumeInfo.personalIdentityContent" | 
 |  |  |       :educationalBackgroundContent="userResumeInfo.educationalBackgroundContent" | 
 |  |  |       :taskCount="userResumeInfo.taskCount" | 
 |  |  |       :contactPhoneNumber="userResumeInfo.contactPhoneNumber" | 
 |  |  |       :identity="userResumeInfo.identity" | 
 |  |  |       :userExpectJobs="userResumeInfo.userExpectJobs" | 
 |  |  |       :freeTime="userResumeInfo.freeTime" | 
 |  |  |       :jobSeekingStatus="userResumeInfo.jobSeekingStatus" | 
 |  |  |       :userCredentials="userResumeInfo.userCredentials" | 
 |  |  |       :workSeniority="userResumeInfo.workSeniority" | 
 |  |  |       :workExperience="userResumeInfo.workExperience" | 
 |  |  |       :photos="userResumeInfo.photos" | 
 |  |  |       :height="userResumeInfo.height" | 
 |  |  |       :weight="userResumeInfo.weight" | 
 |  |  |       :taskInfoUsers="userResumeInfo.taskInfoUsers" | 
 |  |  |       :isCollapse="true" | 
 |  |  |     > | 
 |  |  |       <template #footer> | 
 |  |  |         <PageFooterBtn | 
 |  |  |           type="primary" | 
 |  |  |           plain | 
 |  |  |           @click="taskWorkerHireRefuse(FlexTaskWorkerHireEnum.Refused)" | 
 |  |  |           @click="setTaskUserHire(EnumTaskUserHireStatus.Refuse)" | 
 |  |  |           v-if="taskUserHireStatusResult.hireStatus === EnumTaskUserHireStatus.Wait" | 
 |  |  |           >谢绝</PageFooterBtn | 
 |  |  |         > | 
 |  |  |         <PageFooterBtn type="primary" @click="taskWorkerHireRefuse(FlexTaskWorkerHireEnum.Hired)" | 
 |  |  |         <PageFooterBtn | 
 |  |  |           type="primary" | 
 |  |  |           @click="setTaskUserHire(EnumTaskUserHireStatus.Pass)" | 
 |  |  |           v-if=" | 
 |  |  |             taskUserHireStatusResult.hireStatus === EnumTaskUserHireStatus.Wait || | 
 |  |  |             taskUserHireStatusResult.hireStatus === EnumTaskUserHireStatus.Refuse | 
 |  |  |           " | 
 |  |  |           >录用</PageFooterBtn | 
 |  |  |         > | 
 |  |  |       </template> | 
 |  |  | 
 |  |  | <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 taskUserServices from '@12333/services/apiV2/taskUser'; | 
 |  |  | import { Message } from '@12333/utils'; | 
 |  |  | import { FlexTaskWorkerHireEnum } from '@12333/constants/task'; | 
 |  |  | import { useUserResume } from '@12333/hooks'; | 
 |  |  | import { EnumTaskUserHireStatus } from '@12333/constants'; | 
 |  |  |  | 
 |  |  | defineOptions({ | 
 |  |  |   name: 'InnerPage', | 
 |  |  | }); | 
 |  |  |  | 
 |  |  | const router = Taro.useRouter(); | 
 |  |  | const taskId = router.params?.id ?? ''; | 
 |  |  | const enterpriseEmployeeId = router.params?.enterpriseEmployeeId ?? ''; | 
 |  |  | const id = router.params?.id ?? ''; | 
 |  |  | const taskInfoId = router.params?.taskInfoId ?? ''; | 
 |  |  |  | 
 |  |  | const { | 
 |  |  |   isLoading, | 
 |  |  |   isError, | 
 |  |  |   data: detail, | 
 |  |  |   refetch, | 
 |  |  | } = useQuery({ | 
 |  |  |   queryKey: ['flexWorkerServices/getFlexTaskDto', taskId], | 
 |  |  |   queryFn: async () => { | 
 |  |  |     return await flexWorkerServices.getFlexTaskDto( | 
 |  |  |       { id: taskId }, | 
 |  |  |       { | 
 |  |  |         showLoading: false, | 
 |  |  |       } | 
 |  |  |     ); | 
 |  |  |   }, | 
 |  |  |   placeholderData: () => ({} as API.GetFlexTaskDtoOutput), | 
 |  |  | const { isLoading, isError, userResumeInfo, refetch } = useUserResume({ | 
 |  |  |   enterpriseEmployeeId: enterpriseEmployeeId, | 
 |  |  | }); | 
 |  |  |  | 
 |  |  | async function taskWorkerHireRefuse(hireStatus: FlexTaskWorkerHireEnum) { | 
 |  |  | const { data: taskUserHireStatusResult, refetch: taskUserHireStatusRefetch } = useQuery({ | 
 |  |  |   queryKey: ['taskUserServices/getTaskUserHireStatus', taskInfoId, userResumeInfo.value.id], | 
 |  |  |   queryFn: () => { | 
 |  |  |     let params: API.APIgetTaskUserHireStatusParams = { | 
 |  |  |       taskInfoId: taskInfoId, | 
 |  |  |       userId: userResumeInfo.value.id, | 
 |  |  |     }; | 
 |  |  |     return taskUserServices.getTaskUserHireStatus(params, { showLoading: false }); | 
 |  |  |   }, | 
 |  |  |   enabled: computed(() => !!userResumeInfo.value.id && !!taskInfoId), | 
 |  |  |   placeholderData: () => ({} as API.GetTaskUserHireStatusQueryResult), | 
 |  |  | }); | 
 |  |  |  | 
 |  |  | async function setTaskUserHire(hireStatus: EnumTaskUserHireStatus) { | 
 |  |  |   try { | 
 |  |  |     let params: API.TaskWorkerHireRefuseInput = { | 
 |  |  |       flexTaskId: taskId, | 
 |  |  |       flexWorkerId: detail.value?.taskId, | 
 |  |  |     let params: API.SetTaskUserHireCommand = { | 
 |  |  |       id: id, | 
 |  |  |       hireStatus: hireStatus, | 
 |  |  |     }; | 
 |  |  |     let res = await flexWorkerServices.taskWorkerHireRefuse(params); | 
 |  |  |     let res = await taskUserServices.setTaskUserHire(params); | 
 |  |  |     if (res) { | 
 |  |  |       Message.success('操作成功'); | 
 |  |  |       refetch({ | 
 |  |  |       taskUserHireStatusRefetch({ | 
 |  |  |         type: 'inactive', | 
 |  |  |       }); | 
 |  |  |     } | 
 |  |  |   } catch (error) {} | 
 |  |  | } | 
 |  |  | </script> | 
 |  |  |  | 
 |  |  | <style lang="scss"> | 
 |  |  | @import '@/styles/common.scss'; | 
 |  |  | </style> |