Merge branch 'master' of http://120.26.58.240:8888/r/flexJobMiniApp
| | |
| | | "description": "", |
| | | "setting": { |
| | | "urlCheck": false, |
| | | "es6": true, |
| | | "enhance": true, |
| | | "es6": false, |
| | | "enhance": false, |
| | | "postcss": false, |
| | | "preloadBackgroundData": false, |
| | | "minified": false, |
| | |
| | | { |
| | | "name": "灵工详情", |
| | | "pathName": "subpackages/flexJob/flexJobDetail/flexJobDetail", |
| | | "query": "enterpriseEmployeeId=700a3a67-5da5-49d2-a65a-08ddd661238b", |
| | | "query": "userId=700a3a67-5da5-49d2-a65a-08ddd661238b", |
| | | "launchMode": "default", |
| | | "scene": null |
| | | }, |
| | |
| | | taskCount?: number; |
| | | contactPhoneNumber?: string; |
| | | identity?: string; |
| | | userId?: string; |
| | | |
| | | userExpectJobs?: API.GetUserResumeQueryResultExpectJob[]; |
| | | freeTime?: API.EnumPersonalFreeTime; |
| | |
| | | <CellChunk title="详细信息"> |
| | | <CurriculumViewItem |
| | | label="身高:" |
| | | :text="`${height} cm`" |
| | | :text="height && `${height} cm`" |
| | | :label-width="labelWidth" |
| | | ></CurriculumViewItem> |
| | | <CurriculumViewItem |
| | | label="体重:" |
| | | :text="`${weight} kg`" |
| | | :text="weight && `${weight} kg`" |
| | | :label-width="labelWidth" |
| | | ></CurriculumViewItem> |
| | | <CurriculumViewItem label="个人照片:"> |
| | |
| | | |
| | | function goFlexJobDetail(item: API.GetUserResumesQueryResultItem) { |
| | | Taro.navigateTo({ |
| | | url: `${RouterPath.flexJobDetail}?enterpriseEmployeeId=${item.id}`, |
| | | url: `${RouterPath.flexJobDetail}?userId=${item.id}`, |
| | | }); |
| | | } |
| | | |
| | |
| | | :contactPhoneNumber="userResumeInfo.contactPhoneNumber" |
| | | :identity="userResumeInfo.identity" |
| | | :isCollapse="isCollapse" |
| | | :userId="enterpriseEmployeeId" |
| | | :userExpectJobs="userResumeInfo.userExpectJobs" |
| | | :freeTime="userResumeInfo.freeTime" |
| | | :jobSeekingStatus="userResumeInfo.jobSeekingStatus" |
| | |
| | | }); |
| | | |
| | | const router = Taro.useRouter(); |
| | | const enterpriseEmployeeId = router.params?.enterpriseEmployeeId ?? ''; |
| | | const userId = router.params?.userId ?? ''; |
| | | |
| | | const { isLoading, isError, userResumeInfo, refetch } = useUserResume({ |
| | | userId: enterpriseEmployeeId, |
| | | userId: userId, |
| | | }); |
| | | |
| | | const { isCollapse, toggle } = useToggle(); |
| | |
| | | const handleContact = useAccessLogin(async () => { |
| | | try { |
| | | if (!isCollapse.value) { |
| | | await userResumeServices.contactUserResume({ id: enterpriseEmployeeId }); |
| | | await userResumeServices.contactUserResume({ id: userId }); |
| | | toggle(); |
| | | } |
| | | } catch (error) {} |
| | |
| | | async function handleAttention() { |
| | | try { |
| | | let params: API.CollectUserResumeCommand = { |
| | | id: enterpriseEmployeeId, |
| | | id: userId, |
| | | isCollected: !userResumeInfo.value.isCollected, |
| | | }; |
| | | let res = await userResumeServices.collectUserResume(params); |
| | |
| | | :taskCount="userResumeInfo.taskCount" |
| | | :contactPhoneNumber="userResumeInfo.contactPhoneNumber" |
| | | :identity="userResumeInfo.identity" |
| | | :userId="enterpriseEmployeeId" |
| | | :userExpectJobs="userResumeInfo.userExpectJobs" |
| | | :freeTime="userResumeInfo.freeTime" |
| | | :jobSeekingStatus="userResumeInfo.jobSeekingStatus" |
| | |
| | | :isCollapse="true" |
| | | > |
| | | <template #footer> |
| | | <PageFooterBtn type="primary" plain @click="setTaskUserHire(EnumTaskUserHireStatus.Refuse)" |
| | | >谢绝</PageFooterBtn |
| | | <template v-if="taskUserHireStatusResult.hireStatus === EnumTaskUserHireStatus.Wait"> |
| | | <PageFooterBtn |
| | | type="primary" |
| | | plain |
| | | @click="setTaskUserHire(EnumTaskUserHireStatus.Refuse)" |
| | | >谢绝</PageFooterBtn |
| | | > |
| | | <PageFooterBtn type="primary" @click="setTaskUserHire(EnumTaskUserHireStatus.Pass)" |
| | | >录用</PageFooterBtn |
| | | > |
| | | </template> |
| | | <PageFooterBtn |
| | | v-else-if="taskUserHireStatusResult.hireStatus === EnumTaskUserHireStatus.Refuse" |
| | | type="primary" |
| | | plain |
| | | disabled |
| | | >已谢绝</PageFooterBtn |
| | | > |
| | | <PageFooterBtn type="primary" @click="setTaskUserHire(EnumTaskUserHireStatus.Pass)" |
| | | >录用</PageFooterBtn |
| | | <PageFooterBtn |
| | | v-else-if="taskUserHireStatusResult.hireStatus === EnumTaskUserHireStatus.Pass" |
| | | type="primary" |
| | | disabled |
| | | >已录用</PageFooterBtn |
| | | > |
| | | </template> |
| | | </JobDetailContent> |
| | |
| | | const router = Taro.useRouter(); |
| | | const enterpriseEmployeeId = router.params?.enterpriseEmployeeId ?? ''; |
| | | const id = router.params?.id ?? ''; |
| | | const taskInfoId = router.params?.taskInfoId ?? ''; |
| | | |
| | | const { isLoading, isError, userResumeInfo, refetch } = useUserResume({ |
| | | userId: enterpriseEmployeeId, |
| | | enterpriseEmployeeId: enterpriseEmployeeId, |
| | | }); |
| | | |
| | | 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) { |
| | |
| | | let res = await taskUserServices.setTaskUserHire(params); |
| | | if (res) { |
| | | Message.success('操作成功'); |
| | | refetch({ |
| | | taskUserHireStatusRefetch({ |
| | | type: 'inactive', |
| | | }); |
| | | } |
| | |
| | | :taskCount="userResumeInfo.taskCount" |
| | | :contactPhoneNumber="userResumeInfo.contactPhoneNumber" |
| | | :identity="userResumeInfo.identity" |
| | | :userId="enterpriseEmployeeId" |
| | | :userExpectJobs="userResumeInfo.userExpectJobs" |
| | | :freeTime="userResumeInfo.freeTime" |
| | | :jobSeekingStatus="userResumeInfo.jobSeekingStatus" |
| | |
| | | const enterpriseEmployeeId = router.params?.enterpriseEmployeeId ?? ''; |
| | | |
| | | const { isLoading, isError, userResumeInfo, refetch } = useUserResume({ |
| | | userId: enterpriseEmployeeId, |
| | | enterpriseEmployeeId: enterpriseEmployeeId, |
| | | }); |
| | | </script> |
| | | |
| | |
| | | |
| | | function goToJobDetail(item: API.GetTaskUsersQueryResultItem) { |
| | | Taro.navigateTo({ |
| | | url: `${RouterPath.flexJobDetailFromTask}?enterpriseEmployeeId=${item.enterpriseEmployeeId}&id=${item.id}`, |
| | | url: `${RouterPath.flexJobDetailFromTask}?enterpriseEmployeeId=${item.enterpriseEmployeeId}&id=${item.id}&taskInfoId=${id}`, |
| | | }); |
| | | } |
| | | </script> |
| | |
| | | {{ 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">{{ workSeniority && `${workSeniority}年` }}</div> |
| | | <!-- <div class="flexJob-card-done-detail-item">{{ '在「宁波雷迪森酒店」,做过客房服务员' }}</div> --> |
| | | </div> |
| | | <div class="flexJob-card-footer"> |
| | |
| | | <div class="job-application-card-wrapper"> |
| | | <div class="job-application-card-title-wrapper"> |
| | | <div class="job-application-card-title">{{ name }}</div> |
| | | <TaskPrice :value="serviceFee" :unit="unit" v-if="mode === 'taskManage'" /> |
| | | <TaskPrice :value="toThousand(serviceFee ?? 0)" :unit="unit" v-if="mode === 'taskManage'" /> |
| | | <div v-else class="job-application-card-title-more" @click.stop="handleMore"> |
| | | <img :src="IconMore" class="more-btn-icon" /> |
| | | </div> |
| | |
| | | </div> |
| | | <slot name="footer-actions"> |
| | | <div class="job-application-card-fee"> |
| | | <TaskPrice :value="serviceFee" :unit="unit" /> |
| | | <TaskPrice :value="toThousand(serviceFee)" :unit="unit" /> |
| | | </div> |
| | | </slot> |
| | | </div> |
| | |
| | | import { TaskPrice } from '@12333/components'; |
| | | import { EnumTaskStatus, EnumTaskReleaseStatus, EnumTaskReleaseStatusText } from '@12333/constants'; |
| | | import dayjs from 'dayjs'; |
| | | import { toThousand } from '@12333/utils'; |
| | | |
| | | defineOptions({ |
| | | name: 'JobApplicationCard', |
| | |
| | | import { useQuery, useQueryClient } from '@tanstack/vue-query'; |
| | | |
| | | type UseUserResumeOptions = { |
| | | userId: MaybeRef<string>; |
| | | userId?: MaybeRef<string>; |
| | | enterpriseEmployeeId?: MaybeRef<string>; |
| | | }; |
| | | |
| | | export function useUserResume({ userId }: UseUserResumeOptions) { |
| | | export function useUserResume(options: UseUserResumeOptions = {}) { |
| | | const { userId, enterpriseEmployeeId } = options; |
| | | |
| | | const { data, refetch, isLoading, isError } = useQuery({ |
| | | queryKey: ['userResumeServices/getUserResume', userId], |
| | | queryKey: ['userResumeServices/getUserResume', userId, enterpriseEmployeeId], |
| | | queryFn: async () => { |
| | | return await userResumeServices.getUserResume( |
| | | { userId: unref(userId) }, |
| | | { userId: unref(userId), enterpriseEmployeeId: unref(enterpriseEmployeeId) }, |
| | | { |
| | | showLoading: false, |
| | | } |
| | | ); |
| | | }, |
| | | placeholderData: () => ({} as API.GetUserResumeQueryResult), |
| | | enabled: computed(() => !!unref(userId)), |
| | | enabled: computed(() => !!unref(userId) || !!unref(enterpriseEmployeeId)), |
| | | }); |
| | | |
| | | return { |
| | |
| | | // API 更新时间: |
| | | // API 唯一标识: |
| | | import * as enterpriseEmployee from './enterpriseEmployee'; |
| | | import * as user from './user'; |
| | | import * as role from './role'; |
| | | import * as enterprise from './enterprise'; |
| | | import * as task from './task'; |
| | | import * as taskCheckReceive from './taskCheckReceive'; |
| | | import * as dictionary from './dictionary'; |
| | | import * as user from './user'; |
| | | import * as userResume from './userResume'; |
| | | import * as auth from './auth'; |
| | | import * as resource from './resource'; |
| | |
| | | import * as menu from './menu'; |
| | | export default { |
| | | enterpriseEmployee, |
| | | user, |
| | | role, |
| | | enterprise, |
| | | task, |
| | | taskCheckReceive, |
| | | dictionary, |
| | | user, |
| | | userResume, |
| | | auth, |
| | | resource, |
| | |
| | | }); |
| | | } |
| | | |
| | | /** 查询应聘报名人员录用状态 GET /api/flexjob/taskUser/getTaskUserHireStatus */ |
| | | export async function getTaskUserHireStatus( |
| | | // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) |
| | | params: API.APIgetTaskUserHireStatusParams, |
| | | options?: API.RequestConfig |
| | | ) { |
| | | return request<API.GetTaskUserHireStatusQueryResult>( |
| | | '/api/flexjob/taskUser/getTaskUserHireStatus', |
| | | { |
| | | method: 'GET', |
| | | params: { |
| | | ...params, |
| | | }, |
| | | ...(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', { |
| | |
| | | id?: string; |
| | | } |
| | | |
| | | interface APIgetTaskUserHireStatusParams { |
| | | /** 任务Id */ |
| | | taskInfoId?: string; |
| | | /** 用户Id(C端用户可不填) */ |
| | | userId?: string; |
| | | } |
| | | |
| | | interface APIgetUserInfoRolesParams { |
| | | /** 用户Id */ |
| | | userInfoId?: string; |
| | |
| | | /** 错误码 */ |
| | | errorCode?: string; |
| | | data?: GetTaskInfosQueryResult; |
| | | /** 执行成功 */ |
| | | success?: boolean; |
| | | /** 错误信息 */ |
| | | msg?: any; |
| | | /** 附加数据 */ |
| | | extras?: any; |
| | | /** 时间戳 */ |
| | | timestamp?: number; |
| | | } |
| | | |
| | | interface FriendlyResultGetTaskUserHireStatusQueryResult { |
| | | /** 跟踪Id */ |
| | | traceId?: string; |
| | | /** 状态码 */ |
| | | code?: number; |
| | | /** 错误码 */ |
| | | errorCode?: string; |
| | | data?: GetTaskUserHireStatusQueryResult; |
| | | /** 执行成功 */ |
| | | success?: boolean; |
| | | /** 错误信息 */ |
| | |
| | | stoppedReleaseCount?: number; |
| | | } |
| | | |
| | | interface GetTaskUserHireStatusQueryResult { |
| | | hireStatus?: EnumTaskUserHireStatus; |
| | | } |
| | | |
| | | interface GetTaskUsersQuery { |
| | | /** 任务Id */ |
| | | id?: string; |