|  |  | 
 |  |  | <template> | 
 |  |  |   <ContentScrollView :paddingH="false"> | 
 |  |  |     <nut-form :model-value="form" ref="formRef" :rules="rules"> | 
 |  |  |       <nut-form-item label="期望岗位:" class="bole-form-item" prop="job" label-position="top"> | 
 |  |  |         <!-- <ChooseInputWithPicker | 
 |  |  |           v-model="form.job" | 
 |  |  |           placeholder="请选择期望岗位" | 
 |  |  |           :value-enum="TaskStatusText" | 
 |  |  |         /> --> | 
 |  |  |       <nut-form-item | 
 |  |  |         label="期望岗位:" | 
 |  |  |         class="bole-form-item" | 
 |  |  |         prop="userExpectJobs" | 
 |  |  |         label-position="top" | 
 |  |  |       > | 
 |  |  |         <CommonInputField class="job-common-input-field" @click="goExpectPosition"> | 
 |  |  |           <JobTagList /> | 
 |  |  |           <JobTagList :jobTagList="jobTagList" /> | 
 |  |  |         </CommonInputField> | 
 |  |  |       </nut-form-item> | 
 |  |  |       <nut-form-item label="空闲时间:" class="bole-form-item" prop="job"> | 
 |  |  |       <nut-form-item label="空闲时间:" class="bole-form-item" prop="freeTime"> | 
 |  |  |         <ChooseInputWithPicker | 
 |  |  |           v-model="form.job" | 
 |  |  |           v-model="form.freeTime" | 
 |  |  |           placeholder="请选择空闲时间" | 
 |  |  |           :value-enum="TaskStatusText" | 
 |  |  |           :value-enum="EnumPersonalFreeTimeText" | 
 |  |  |         /> | 
 |  |  |       </nut-form-item> | 
 |  |  |       <nut-form-item label="求职状态:" class="bole-form-item" prop="job"> | 
 |  |  |       <nut-form-item label="求职状态:" class="bole-form-item" prop="jobSeekingStatus"> | 
 |  |  |         <ChooseInputWithPicker | 
 |  |  |           v-model="form.job" | 
 |  |  |           v-model="form.jobSeekingStatus" | 
 |  |  |           placeholder="请选择求职状态" | 
 |  |  |           :value-enum="TaskStatusText" | 
 |  |  |           :value-enum="EnumPersonalJobSeekingStatusText" | 
 |  |  |         /> | 
 |  |  |       </nut-form-item> | 
 |  |  |     </nut-form> | 
 |  |  | 
 |  |  | <script setup lang="ts"> | 
 |  |  | import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types'; | 
 |  |  | import { ChooseInputWithPicker, JobTagList, CommonInputField } from '@12333/components'; | 
 |  |  | import { TaskStatusText, TaskStatus } from '@/constants'; | 
 |  |  | import { useUser } from '@/hooks'; | 
 |  |  | 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 { userDetail } = useUser(); | 
 |  |  | 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({ | 
 |  |  |   job: TaskStatus.All, | 
 |  |  |   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>({ | 
 |  |  |   job: [{ required: true, message: '请选择' }], | 
 |  |  |   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() { | 
 |  |  | 
 |  |  |   }); | 
 |  |  | } | 
 |  |  |  | 
 |  |  | function 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> |