|  |  | 
 |  |  | <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?.avatar ?? '')" | 
 |  |  |         :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?.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?.gender === EnumUserGender.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?.phoneNumber ?? '' }} | 
 |  |  |               {{ userResumeInfo?.contactPhoneNumber ?? '' }} | 
 |  |  |             </div> | 
 |  |  |           </div> | 
 |  |  |           <div class="mine-curriculum-info-item-detail"> | 
 |  |  |             {{ | 
 |  |  |               `${detail?.age ?? ''}岁 | ${detail?.personalIdentityContent} | ${ | 
 |  |  |                 detail?.educationalBackgroundContent | 
 |  |  |               }` | 
 |  |  |               `${userResumeInfo?.age ? `${userResumeInfo?.age}岁` : ''}  | 
 |  |  |               ${ | 
 |  |  |                 userResumeInfo?.personalIdentityContent | 
 |  |  |                   ? `| ${userResumeInfo?.personalIdentityContent}` | 
 |  |  |                   : '' | 
 |  |  |               } | 
 |  |  |                 ${ | 
 |  |  |                   userResumeInfo?.educationalBackgroundContent | 
 |  |  |                     ? `| ${userResumeInfo?.educationalBackgroundContent}` | 
 |  |  |                     : '' | 
 |  |  |                 }` | 
 |  |  |             }} | 
 |  |  |           </div> | 
 |  |  |         </div> | 
 |  |  | 
 |  |  |         <MineAgreementSignDetailItem label="空闲时间"> | 
 |  |  |           <template #detail> | 
 |  |  |             <div class="mine-curriculum-intention-bold"> | 
 |  |  |               {{ EnumPersonalFreeTimeText[detail?.freeTime] }} | 
 |  |  |               {{ EnumPersonalFreeTimeText[userResumeInfo?.freeTime] }} | 
 |  |  |             </div> | 
 |  |  |           </template> | 
 |  |  |         </MineAgreementSignDetailItem> | 
 |  |  |         <MineAgreementSignDetailItem label="求职状态"> | 
 |  |  |           <template #detail> | 
 |  |  |             <div class="mine-curriculum-intention-bold"> | 
 |  |  |               {{ EnumPersonalJobSeekingStatusText[detail?.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 { | 
 |  |  | 
 |  |  |   EnumPersonalJobSeekingStatusText, | 
 |  |  | } from '@12333/constants'; | 
 |  |  | import { RouterPath } from '@/constants'; | 
 |  |  | import * as userResumeServices from '@12333/services/apiV2/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 { userDetail } = useUserStore(); | 
 |  |  | const isLogin = useIsLogin(); | 
 |  |  | const router = Taro.useRouter(); | 
 |  |  |  | 
 |  |  | const usrId = computed(() => userDetail?.userId ?? ''); | 
 |  |  |  | 
 |  |  | const eventChannel = useEventChannel(); | 
 |  |  |  | 
 |  |  | useEvent('updateResume', function (data: { content: boolean }) { | 
 |  |  |   if (data.content) { | 
 |  |  |     refetch({ | 
 |  |  |       type: 'inactive', | 
 |  |  |     }); | 
 |  |  |   } | 
 |  |  | }); | 
 |  |  | const { userResumeInfo, refetch } = useUserResume(); | 
 |  |  |  | 
 |  |  | const jobTag = computed( | 
 |  |  |   () => detail?.value?.userExpectJobs?.map((x) => x.personalIdentityContent) ?? [] | 
 |  |  |   () => userResumeInfo?.value?.userExpectJobs?.map((x) => x.expectJobContent) ?? [] | 
 |  |  | ); | 
 |  |  |  | 
 |  |  | const { | 
 |  |  |   isLoading, | 
 |  |  |   isError, | 
 |  |  |   data: detail, | 
 |  |  |   refetch, | 
 |  |  | } = useQuery({ | 
 |  |  |   queryKey: ['userResumeServices/getUserResume', usrId], | 
 |  |  |   queryFn: async () => { | 
 |  |  |     return await userResumeServices.getUserResume( | 
 |  |  |       { userId: usrId.value }, | 
 |  |  |       { | 
 |  |  |         showLoading: false, | 
 |  |  |       } | 
 |  |  |     ); | 
 |  |  |   }, | 
 |  |  |   placeholderData: () => ({} as API.GetUserResumeQueryResult), | 
 |  |  |   enabled: !!usrId.value, | 
 |  |  | }); | 
 |  |  |  | 
 |  |  | function goPage(routeName: string) { | 
 |  |  |   Taro.navigateTo({ | 
 |  |  |     url: routeName, | 
 |  |  |     // events: { | 
 |  |  |     //   updateResume(data: { content: boolean }) { | 
 |  |  |     //     if (data.content) { | 
 |  |  |     //       refetch({ | 
 |  |  |     //         type: 'inactive', | 
 |  |  |     //       }); | 
 |  |  |     //     } | 
 |  |  |     //   }, | 
 |  |  |     // }, | 
 |  |  |   }); | 
 |  |  | } | 
 |  |  | function goEditMineInfo() { |