|  |  |  | 
|---|
|  |  |  | <template> | 
|---|
|  |  |  | <ContentView> | 
|---|
|  |  |  | <nut-noticebar | 
|---|
|  |  |  | text="个人简历已完善50%,完善简历可提升录用率" | 
|---|
|  |  |  | :text="`个人简历已完善${userResumeInfo?.completeRate ?? 0}%,完善简历可提升录用率`" | 
|---|
|  |  |  | :left-icon="false" | 
|---|
|  |  |  | background="transparent" | 
|---|
|  |  |  | close-mode | 
|---|
|  |  |  | 
|---|
|  |  |  | <Avatar | 
|---|
|  |  |  | :size="60" | 
|---|
|  |  |  | class="mine-curriculum-avatar" | 
|---|
|  |  |  | :src="setOSSLink(detail?.resumeBaseInfo?.avatarUrl ?? '')" | 
|---|
|  |  |  | :src="setOSSLink(userResumeInfo?.avatar ?? '')" | 
|---|
|  |  |  | ></Avatar> | 
|---|
|  |  |  | <div class="mine-curriculum-info-content"> | 
|---|
|  |  |  | <div class="mine-curriculum-info-item"> | 
|---|
|  |  |  | <div class="mine-curriculum-info-item-left"> | 
|---|
|  |  |  | <div class="mine-curriculum-info-item-name"> | 
|---|
|  |  |  | {{ detail?.resumeBaseInfo?.name ?? '' }} | 
|---|
|  |  |  | {{ userResumeInfo?.name ?? '' }} | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="mine-curriculum-info-item-gender"> | 
|---|
|  |  |  | <div class="mine-curriculum-info-item-gender" v-if="userResumeInfo?.gender"> | 
|---|
|  |  |  | <div class="mine-curriculum-info-item-gender-dot">·</div> | 
|---|
|  |  |  | <img | 
|---|
|  |  |  | v-if="detail?.resumeBaseInfo?.genderType === Gender.Male" | 
|---|
|  |  |  | v-if="userResumeInfo?.gender === EnumUserGender.Male" | 
|---|
|  |  |  | :src="IconMale" | 
|---|
|  |  |  | class="mine-curriculum-info-item-gender-icon" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | 
|---|
|  |  |  | <IconFont name="rect-right" size="16" color="#6D6E6E" @click="goEditMineInfo"></IconFont> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="mine-curriculum-info-item"> | 
|---|
|  |  |  | <div class="mine-curriculum-info-item-left"> | 
|---|
|  |  |  | <div class="mine-curriculum-info-item-left" v-if="userResumeInfo?.contactPhoneNumber"> | 
|---|
|  |  |  | <img :src="IconPhone" class="mine-curriculum-info-item-phone-icon" /> | 
|---|
|  |  |  | <div class="mine-curriculum-info-item-phone"> | 
|---|
|  |  |  | {{ detail?.resumeBaseInfo?.phoneNumber ?? '' }} | 
|---|
|  |  |  | {{ userResumeInfo?.contactPhoneNumber ?? '' }} | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | <div class="mine-curriculum-info-item-detail"> | 
|---|
|  |  |  | {{ | 
|---|
|  |  |  | `${detail?.resumeBaseInfo?.age ?? ''}岁 | ${ | 
|---|
|  |  |  | detail?.resumeBaseInfo?.socialIdentityName | 
|---|
|  |  |  | } | ${detail?.resumeBaseInfo?.educationalLevelName}` | 
|---|
|  |  |  | `${userResumeInfo?.age ? `${userResumeInfo?.age}岁` : ''} | 
|---|
|  |  |  | ${ | 
|---|
|  |  |  | userResumeInfo?.personalIdentityContent | 
|---|
|  |  |  | ? `| ${userResumeInfo?.personalIdentityContent}` | 
|---|
|  |  |  | : '' | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ${ | 
|---|
|  |  |  | userResumeInfo?.educationalBackgroundContent | 
|---|
|  |  |  | ? `| ${userResumeInfo?.educationalBackgroundContent}` | 
|---|
|  |  |  | : '' | 
|---|
|  |  |  | }` | 
|---|
|  |  |  | }} | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | 
|---|
|  |  |  | <MineAgreementSignDetailItem label="空闲时间"> | 
|---|
|  |  |  | <template #detail> | 
|---|
|  |  |  | <div class="mine-curriculum-intention-bold"> | 
|---|
|  |  |  | {{ UserResumeFreeTimeEnumText[detail?.resumeExpectationJob?.freeTime] }} | 
|---|
|  |  |  | {{ EnumPersonalFreeTimeText[userResumeInfo?.freeTime] }} | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </MineAgreementSignDetailItem> | 
|---|
|  |  |  | <MineAgreementSignDetailItem label="求职状态"> | 
|---|
|  |  |  | <template #detail> | 
|---|
|  |  |  | <div class="mine-curriculum-intention-bold"> | 
|---|
|  |  |  | {{ | 
|---|
|  |  |  | UserResumeJobSeekingStatusEnumText[detail?.resumeExpectationJob?.jobSeekingStatus] | 
|---|
|  |  |  | }} | 
|---|
|  |  |  | {{ EnumPersonalJobSeekingStatusText[userResumeInfo?.jobSeekingStatus] }} | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </MineAgreementSignDetailItem> | 
|---|
|  |  |  | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <script setup lang="ts"> | 
|---|
|  |  |  | import { useUserStore } from '@/stores/modules/user'; | 
|---|
|  |  |  | import { useIsLogin } from '@/hooks'; | 
|---|
|  |  |  | import MineAgreementSignDetailItem from '../../mine/mineAgreementSignDetail/MineAgreementSignDetailItem.vue'; | 
|---|
|  |  |  | import { List, ListItem, JobTagList, Avatar } from '@12333/components'; | 
|---|
|  |  |  | import { | 
|---|
|  |  |  | Gender, | 
|---|
|  |  |  | UserResumeFreeTimeEnumText, | 
|---|
|  |  |  | UserResumeJobSeekingStatusEnumText, | 
|---|
|  |  |  | EnumUserGender, | 
|---|
|  |  |  | EnumPersonalFreeTimeText, | 
|---|
|  |  |  | EnumPersonalJobSeekingStatusText, | 
|---|
|  |  |  | } from '@12333/constants'; | 
|---|
|  |  |  | import { RouterPath } from '@/constants'; | 
|---|
|  |  |  | import * as userResumeServices from '@12333/services/api/userResume'; | 
|---|
|  |  |  | import IconArrow from '@/assets/setting/icon-arrow.png'; | 
|---|
|  |  |  | import IconAuth from '@/assets/mine/icon-auth.png'; | 
|---|
|  |  |  | import IconMale from '@/assets/mine/icon-male.png'; | 
|---|
|  |  |  | import IconFemale from '@/assets/mine/icon-female.png'; | 
|---|
|  |  |  | import IconPhone from '@/assets/mine/icon-phone.png'; | 
|---|
|  |  |  | import Taro from '@tarojs/taro'; | 
|---|
|  |  |  | import { useQuery } from '@tanstack/vue-query'; | 
|---|
|  |  |  | import { setOSSLink } from '@12333/utils'; | 
|---|
|  |  |  | import { useEvent, useEventChannel } from 'senin-mini/hooks'; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | defineOptions({ | 
|---|
|  |  |  | name: 'InnerPage', | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const userStore = useUserStore(); | 
|---|
|  |  |  | const isLogin = useIsLogin(); | 
|---|
|  |  |  | const router = Taro.useRouter(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const taskId = router.params?.taskId; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const eventChannel = useEventChannel(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | useEvent('updateResume', function (data: { content: boolean }) { | 
|---|
|  |  |  | if (data.content) { | 
|---|
|  |  |  | refetch({ | 
|---|
|  |  |  | type: 'inactive', | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | const { userResumeInfo, refetch } = useUserResume(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const jobTag = computed( | 
|---|
|  |  |  | () => detail?.value?.resumeExpectationJob?.jobIdList?.map((x) => x.name) ?? [] | 
|---|
|  |  |  | () => userResumeInfo?.value?.userExpectJobs?.map((x) => x.expectJobContent) ?? [] | 
|---|
|  |  |  | ); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const { | 
|---|
|  |  |  | isLoading, | 
|---|
|  |  |  | isError, | 
|---|
|  |  |  | data: detail, | 
|---|
|  |  |  | refetch, | 
|---|
|  |  |  | } = useQuery({ | 
|---|
|  |  |  | queryKey: ['userResumeServices/getUserResume', taskId], | 
|---|
|  |  |  | queryFn: async () => { | 
|---|
|  |  |  | return await userResumeServices.getUserResume({ | 
|---|
|  |  |  | showLoading: false, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | placeholderData: () => ({} as API.MyResumeOutput), | 
|---|
|  |  |  | onSuccess(data) {}, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function goPage(routeName: string) { | 
|---|
|  |  |  | Taro.navigateTo({ | 
|---|
|  |  |  | url: routeName, | 
|---|
|  |  |  | // events: { | 
|---|
|  |  |  | //   updateResume(data: { content: boolean }) { | 
|---|
|  |  |  | //     if (data.content) { | 
|---|
|  |  |  | //       refetch({ | 
|---|
|  |  |  | //         type: 'inactive', | 
|---|
|  |  |  | //       }); | 
|---|
|  |  |  | //     } | 
|---|
|  |  |  | //   }, | 
|---|
|  |  |  | // }, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | function goEditMineInfo() { | 
|---|