| <template> | 
|   <ContentScrollView :paddingH="false"> | 
|     <nut-form :model-value="form" ref="formRef" :rules="rules"> | 
|       <nut-form-item | 
|         label="期望岗位:" | 
|         class="bole-form-item" | 
|         prop="userExpectJobs" | 
|         label-position="top" | 
|       > | 
|         <CommonInputField class="job-common-input-field" @click="goExpectPosition"> | 
|           <JobTagList :jobTagList="jobTagList" /> | 
|         </CommonInputField> | 
|       </nut-form-item> | 
|       <nut-form-item label="空闲时间:" class="bole-form-item" prop="freeTime"> | 
|         <ChooseInputWithPicker | 
|           v-model="form.freeTime" | 
|           placeholder="请选择空闲时间" | 
|           :value-enum="EnumPersonalFreeTimeText" | 
|         /> | 
|       </nut-form-item> | 
|       <nut-form-item label="求职状态:" class="bole-form-item" prop="jobSeekingStatus"> | 
|         <ChooseInputWithPicker | 
|           v-model="form.jobSeekingStatus" | 
|           placeholder="请选择求职状态" | 
|           :value-enum="EnumPersonalJobSeekingStatusText" | 
|         /> | 
|       </nut-form-item> | 
|     </nut-form> | 
|   </ContentScrollView> | 
|   <PageFooter> | 
|     <PageFooterBtn type="primary" @click="handleConfirm">保存</PageFooterBtn> | 
|   </PageFooter> | 
| </template> | 
|   | 
| <script setup lang="ts"> | 
| import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types'; | 
| import { ChooseInputWithPicker, JobTagList, CommonInputField } from '@12333/components'; | 
| import { | 
|   CategoryCode, | 
|   EnumPersonalFreeTime, | 
|   EnumPersonalJobSeekingStatus, | 
|   EnumPersonalFreeTimeText, | 
|   EnumPersonalJobSeekingStatusText, | 
| } from '@12333/constants'; | 
| import Taro from '@tarojs/taro'; | 
| import * as userResumeServices from '@12333/services/apiV2/userResume'; | 
| import { useDictionaryDataSelect, useUpdateResume } from '@12333/hooks'; | 
| import { Message } from '@12333/utils'; | 
| import { useQuery } from '@tanstack/vue-query'; | 
| import { goBack } from '@/utils'; | 
|   | 
| defineOptions({ | 
|   name: 'InnerPage', | 
| }); | 
|   | 
| const { updateUserResume } = useUpdateResume(); | 
|   | 
| const { dictionaryDataList: positionList } = useDictionaryDataSelect({ | 
|   categoryCode: CategoryCode.Position, | 
| }); | 
|   | 
| const jobTagList = computed(() => { | 
|   return ( | 
|     positionList.value?.filter((x) => form.userExpectJobs.includes(x.value)).map((x) => x.label) || | 
|     [] | 
|   ); | 
| }); | 
|   | 
| const form = reactive({ | 
|   userExpectJobs: [] as string[], | 
|   freeTime: EnumPersonalFreeTime.NoLimit, | 
|   jobSeekingStatus: EnumPersonalJobSeekingStatus.Active, | 
| }); | 
|   | 
| const { | 
|   isLoading, | 
|   isError, | 
|   data: detail, | 
|   refetch, | 
| } = useQuery({ | 
|   queryKey: ['userResumeServices/getUserResumeJobSeeking'], | 
|   queryFn: async () => { | 
|     return await userResumeServices.getUserResumeJobSeeking( | 
|       {}, | 
|       { | 
|         showLoading: false, | 
|       } | 
|     ); | 
|   }, | 
|   placeholderData: () => ({} as API.GetUserResumeJobSeekingQueryResult), | 
|   onSuccess(data) { | 
|     form.userExpectJobs = data.userExpectJobs.map((x) => x.expectJobCode); | 
|     form.freeTime = data.freeTime ?? ('' as any); | 
|     form.jobSeekingStatus = data.jobSeekingStatus ?? ('' as any); | 
|   }, | 
| }); | 
|   | 
| const rules = reactive<FormRules>({ | 
|   userExpectJobs: [ | 
|     { | 
|       required: true, | 
|       validator() { | 
|         if (form.userExpectJobs.length) return Promise.resolve(true); | 
|         return Promise.reject('请选择期望岗位'); | 
|       }, | 
|     }, | 
|   ], | 
|   freeTime: [{ required: true, message: '请选择空闲时间' }], | 
|   jobSeekingStatus: [{ required: true, message: '请选择求职状态' }], | 
| }); | 
| const formRef = ref<any>(null); | 
| function handleConfirm() { | 
|   if (!formRef.value) return; | 
|   formRef.value.validate().then(({ valid, errors }: any) => { | 
|     if (valid) { | 
|       confirm(); | 
|     } | 
|   }); | 
| } | 
|   | 
| async function confirm() { | 
|   try { | 
|     let params: API.SaveUserResumeJobSeekingCommand = { | 
|       userExpectJobs: form.userExpectJobs, | 
|       freeTime: form.freeTime, | 
|       jobSeekingStatus: form.jobSeekingStatus, | 
|     }; | 
|     let res = await userResumeServices.saveUserResumeJobSeeking(params); | 
|     if (res) { | 
|       Message.success('保存成功', { | 
|         onClosed() { | 
|           goBack(); | 
|           updateUserResume(); | 
|         }, | 
|       }); | 
|     } | 
|   } catch (error) {} | 
| } | 
|   | 
| function goExpectPosition() { | 
|   Taro.navigateTo({ | 
|     url: `${RouterPath.expectPosition}`, | 
|     events: { | 
|       addPosition: function (data: { content: string[] }) { | 
|         form.userExpectJobs = data.content?.length ? data.content : []; | 
|       }, | 
|     }, | 
|     success: function (res) { | 
|       res.eventChannel.emit('updatePosition', { content: form.userExpectJobs }); | 
|     }, | 
|   }); | 
| } | 
| </script> | 
|   | 
| <style lang="scss"> | 
| @import '@/styles/common.scss'; | 
|   | 
| .mineJobIntention-page-wrapper { | 
|   .job-common-input-field { | 
|     .common-input-field-icon { | 
|       margin-top: 13px; | 
|     } | 
|   } | 
| } | 
| </style> |